My Team recently embarked on our first real Java web app. Prior to this, our corporation was primarily a COBOL shop with some VB and C thrown in. Recently, new blood's been injected, including me and a few others who by education are primarily experienced with Java but none of us have really done this full blown and for real at this point. I've read books like Continuous Integration, The Art of Agile Development, Java Power Tools, Refactoring, etc. and I listen to podcasts like the JavaPosse and have come away with it convinced that TDD and CI and automated code inspection and SCM etc. are very important to any truly successful and maintainable software project. The problem is, of course, that all of this is white-tower knowledge.
What I'm looking for is specifically the tool stacks that other experienced java teams are using, from the browsers testing through the IDE down to CI Server (or lack thereof) and automated inspection tools. We're pretty sold on distributed SCM although we're still not set on choosing Git or Mercurial right now (I'm pro Git but others are a little leery of it's IDE support). I think we're all sold on findbugs. Ant's the build tool we're planning on at the moment. We're thinking about Hudson for a CI server. I use Emacs but the other devs dig Eclipse for JEE (and I think there's rumors of RAD to come, although I wouldn't touch it with a 10 foot pole). Obvious lacks are in the automated complexity checking, code convention tools, architecture policy tools, and other such things that I'm probably not even thinking of.
We're basically pushing for Spring/Struts2 w/ Hibernate and a DB2 backend, if that's germane.
Also, a basic description of your environment would be interesting. Are you using Dev Sandbox/Integration Server/Production Server? Do you have a different DB on dev boxes for performance than you do on Integration and Production? Things like that.
To be clear, I'm hoping for blog like responses to this (though of course every answer will be appreciated). Unless you absolutely have to, please don't just list a bunch of tools in a single comma-separated line without explaining yourself. I'm really interested in hearing how everything gets integrated and used.
Thanks in advance!
Caveat: I'm aware of this question. Specifically, while that question could possibly have answered what I'm asking here, most of the answers were not really explained. That's what I'm trying to avoid in the answers to this questions. Thanks!