In defense of Maven


Steve Ebersole’s wrote a “This isn’t a rant” rant on the JBoss community site where he proceeds to attack a series of Maven straw men. I’m not going to get into it, other than some quick responses:

1. Docbook? You have a hard time managing DocBook with Maven? C’mon – I manage a library of books with Maven all of which are written in DocBook. The artifacts are deployed to a repository manager, and the builds are all run through Hudson. We spit out ePub, PDF, HTML using the docbkx work from Wilfred Springer.

2. You can’t build a submodule in isolation? Again, this is a straw man. Maven’s parent -> module relationships are not always symmetric with child -> parent relationships. Gradle solves this by making a simplifying assumption that they always are. This isn’t always accurate and it would screw up a number of projects I work on. Plus there are reactor options to give this man what he was asking for, but he doesn’t like how they work. That’s fair, but more style than substance.

3. Maven doesn’t support multi-module builds… Wait, what? Yes it does.

4. The Release plugin isn’t worthless, I use it all the time. It saves me a tremendous amount of time. It works well with Git and Subversion, and without it, I’d have carpal tunnel syndrome. There are edge cases where it doesn’t work, when I hit those, I use “mvn versions:set”, and (GASP) I execute version control commands. It isn’t that bad, really, it isn’t. Now the code for the release plugin is a different matter – the Release plugin is one of those mega-plugins like the Site plugin – it is a world unto itself. That needs to change.

I repeat: I use the Maven Release Plugin all the time, it saves me considerable time. If you want to fault anyone for how difficult it is to use, fault me. I still have not written a chapter on the damn thing.

Other than that, let me know how it goes. Gradle looks interesting, but not interesting enough to sacrifice everything I get with Maven.