Besides toying around with all the different AOP frameworks I still have a day job. Currently I'm converting the build process from pure Ant to Maven. My co-workers are still not convinced that it's worth it. I know there are loads of interesting features in it (I'm rereading Scott Ambler's Agile Modeling btw). But what are the truly compelling reasons? What does it buy me (besides tighter integration into an overall build/test/deployment iteration) and more importantly my colleagues?
For me the truly compelling reasons for using Maven are as follows...
Once you describe what your dependencies are, Maven will pretty much automatically build and test your code, (properly instrumenting your jars' manifest of course) downloading any jars required to build your code from one or more remote repositories into a local repository.
Maven will also build your entire website packed with oodles of useful reports, javadoc, cross referenced source code, unit test reports, style check reports, (optional clover test coverage reports). Even better, by typing
It will build the site and deploy it on your website (internet, intranet etc) for you!
Will create a binary distribution, including all the documentation, and deploy it for you too!
e.g. checkout this example site. There's an example here of the different reports. Essentially the whole 'Project Documentation' section is generated by Maven for you - e.g. a full list of real dependencies used to build your system or the development team details and contacts.
All of the above are pretty much my core reasons for using Maven. Here's a few other neat things I really like about Maven...
The use of a local repository makes it easy to work on several related projects; I can try installing a personal version of a certain project via
which will build a project and install its jar in the local repository so that another project can build against it. No more messing around manually copying jars around.
Other handy things are the test:ui goal to run a Swing TestRunner or test:single and test:match for running individual unit tests or a pattern match of unit tests.
Then there's the eclipse, idea and jbulder plugins to automatically create project files for your build, with all the correct class & source paths. Oh and the ability to create Ant or Gump builds. I won't even get into all the various plugins for working with XDoclet or WARs or Cactus or web servers or JavaCC etc.
Is that enough to convince you yet? :-)