Now I really don’t get this project. At first glance, JAM seems to provide some of the Maven functionality in a nice, structured, way using Ant. The part I don’t grok is that JAM depends on Maven. Huh?
Since I am sure to be missing something and am very interested in build tools, please comment if anyone can do a good job of explaining where JAM fits.
Rather than write a 500+ line Ant build file to facilitate a test-driven Java project, JAM allows you to assemble a build by importing reusable modules. JAM modules handle about 80% of the tedious packaging, testing, XDoclet, deployment and server control tasks you’d otherwise have to maintain by hand. However, every Java project has a unique set of dependencies and resources that can not be anticipated by a static set of build modules which is were Maven comes in. Maven’s project descriptor (or POM) allows one to express project attributes in a flexible and concise manner. JAM adopted the POM and uses a Maven-to-Ant plugin to generate the remaining 20% of Ant scripts that handle classpath and resource management.
This approach combines the high-level declarative features of Maven with the low-level functional power of Ant without requiring a developer to learn Maven’s scripting language, Jelly. Once the project descriptor is specified, the JAM plugin is invoked by typing ‘maven jam’; after which it’s a pure Ant build environment.
Thanks for your extensive reply, Richard, your explanation clears a lot of things up for me. Maybe depending on Maven at all is going to turn off many Ant users, though.