Wednesday, April 18, 2007

I just read James Strachan's Maven Car Analogy in Go Sonatype.  My experience echoes his comments.

I'm a big maven fan, and think its enabled us to achieve so much more in a repeatable way, especially the two step release process.

But I still can't say we have had a net saving of effort.  We have had various issues with build plugins, lived with surefire issues for 6 months until the recent release, patched around the hopeless maven-xdoclet-plugin.  We lived (for a while) with the bugs and quirks and constant refresh,
rebuild cycle of the Maven Eclipse integration M2Eclipse.  Eventually
we dumped it for "mvn eclipse:eclipse".

We even built an inhouse plugin for Agitar, which was complete, easy to use and required little configuration, especially compared with the vanilla Ant tasks they provide which were only usable with trivial projects. But then we stopped using Agitar. 

However, the benefits are less time related, they are quality and process related. I think Maven 2 has enabled us to refactor at the project and module level, much more easily than with Ant.  It's allowed us to split development into various shared framework components that have their own release cycle and can be used by others.

And it has so much potential to improve.  I'm hopeful that the release and scm plugins will support branching on release etc.  In general the various plugins are constantly becoming more functional.

Back to the analogy, it really feels like Ant doesn't have much more to give, apart from being stable and predictable.  The Ant car never breaks down, gets great mileage and everyone knows how to drive it.

The Maven 2 Car makes life dangerous and exciting, but also gives hope that
once they finally get the maven-antigravity-plugin working, the commute to work will be so much better.