"I looked very seriously at the veto," Trump said. "I was thinking about doing the veto. But because of the incredible gains that we've been able to make for the military, that overrode any of our thinking."
Aides had been insisting Trump would sign the measure because it authorizes tens of billions of dollars in additional military spending.
"My highest duty is to keep America safe," Trump said.
The president complained that he was forced to go along with higher spending on domestic programs in order to win Democratic support for the bill but insisted he would not do so in the future.
"I say to Congress I will never sign another bill like this again," Trump said.
He urged lawmakers to grant him authority to veto individual line items in future spending bills. He also called for scrapping the requirement of 60 votes to pass a bill in the Senate — a threshold that demands bipartisan compromise. Neither of those moves appears likely. The Supreme Court ruled the line-item veto unconstitutional 20 years ago. And Senate Majority Leader Mitch McConnell, R-Ky., has rejected the idea of discarding the filibuster.
A day earlier, Vice President Pence told an audience in New Hampshire that one reason Trump would sign the omnibus was because it included some money for a border wall.
"With $1.6 billion included in the spending bill that arrives on President Trump's desk tomorrow, we're going to start to build that wall," Pence said to applause. "We're doing it."
White House budget director Mick Mulvaney also cited the bill's increases in spending on the opioid crisis, school safety and workforce development.
"Is it perfect?" Mulvaney asked, rhetorically. "No. Is it exactly what we asked for in the budget? No. Were we ever going to get that? No. That's not how the process works."
Mulvaney acknowledged the bill does not go as far as Trump wanted on immigration.
"Let's make it clear," Mulvaney said. "The president wanted a DACA fix as part of this deal. He had offered a large package with a complete DACA fix in exchange for the entire wall. "
There is more to the story, though: In exchange for a DACA fix — to protect young immigrants brought to the country as children from deportation — Trump demanded not only funding for the border wall but also big changes in the nation's legal immigration system.
Trump has rejected proposed bipartisan DACA fixes that would swap a permanent fix for money to build a border wall. The White House demanded broader changes to legal immigration that Democrats wouldn't support.
Conservatives in Congress opposed the spending bill because it would add to the deficit. Many, like House Freedom Caucus Chairman Mark Meadows, R-N.C., say they were dismayed that the legislation includes spending increases sought by Democrats and fails to fulfill Republican campaign promises to cut the overall size of government.