Eclipse began a sort-of half-assed attempt at integrating development with deployment half a dozen years ago, with the first release of WTP back in 2005. And since then, it hasn't gotten any better. It may have even gotten worse.
In a perfect world, when I change a line of code in Eclipse and save the file, the class would be recompiled, hot-swapped into the running server, and I could go see the effect of my change in my browser. This does not happen. Or rather, sometimes it can happen, maybe. Maybe if you install JavaRebel, it will work. Maybe it won't. Who knows?
What really happens, most of the time, is that Eclipse will compile the class, then, for reasons I can't imagine anyone understands, it rebuilds the entire .war file for your whole project, then copies the war to the deployment directory of the server. Then the server reloads completely, exploding the war, and restarting everything. The entire process is maddening and can take several minutes, for every change, no matter how insignificant.
I say "most of the time" because a lot of the time, for no apparent reason, things just don't work. Something won't get included in the war file, despite no changes to the configuration for your project. Some dependency gets left out. Some resource file doesn't get copied. Sometimes the war file gets rebuilt, but not redeployed, or not reloaded.
When any of these things happen, you find yourself going through this stupid litany of things to try to get the damn tool to do its job. Clean the server. Clean all projects. Restart the server. Update Maven dependencies. Restart Eclipse. A single-line code change can turn into a 20-minute ordeal trying to get the damn server to reflect your change so you can see its results in a browser.
Most infuriating about having to go through all these insane steps is that there's no definite action that causes WTP to fail; there's nothing one can avoid doing to avoid going through all of these things. As far as I can tell, the bed-shitting is completely random and utterly nondeterministic.
No doubt some of the trouble comes from the m2eclipse plug-in. In fact, I suspect that a good 60% of the problems I experience overall in Eclipse are a direct consequence of something stupid in m2eclipse. Of course we wouldn't need m2eclipse if Eclipse had acceptable Maven support built-in. But it doesn't.
What's so baffling about this whole situation is that it hasn't improved! In the 5 years since WTP was initially released, the user experience has not improved one iota. The cycle time with JBoss can still easily be several minutes per change (when WTP isn't completely going batshit as outlined above).
Surely in 5 years' time, this piece of braised crap could have been made some small degree more stable so as to be actually useful, and a time-saver rather than a time-suck.
I can't believe we're still writing web applications like this and it's almost 2011.