I have looked at the newest version of the pet store application (ver 1.3) and like how the source code is organized into different applications and components. I am also a big fan of Ant. The design works well for everyone except "web component developers".
For development, we work in an exploded directory. (Meaning that the entire application is not packaged into war/ear files) This allows our jsp developers to make changes on the fly and not have to push a war file out after every change.
I like the organization of code in the pet store application but do not like redeploying a war file after every change is made. If you have developed a elegant solution to this problem, I would like to hear from you. I will be starting a large project soon and any tips/lessons learned would be great.
I'm not sure what environment you will be developing in, i.e. what IDE and app.server you will be using, but this is the way we are working in my current project:
Compile your code with the IDE and let it put the output, i.e. the class files, in a "exploded format" in the app.server domain. With exploded format I mean class files instead of jar/war/ear files.
If you have a "smart" app.server, like WLS 6.0, it will create the stubs and skeletons for your ejbs and so on.
Therefore we do not have to redeploy a new war/jar/ear file for every change we make.
[We are using JBuilder5 EE and Weblogic 6.0sp2]
I think this is a simple way of working in larger projects with loads of daily code updates.