I think it’s fair to say that Maven has yet to catch fire among Java developers. Maven is complicated to learn and its documentation is lacking. Most Java developers who are using Ant probably have heard of Maven and its promise of easier automated builds. In fact, a fair number of Ant users probably have it on their To Do List to check out Maven to see whether it will save them time.
But the Maven team’s technology preview release last month of Maven 2.0 almost certainly will hurt Maven’s adoption, at least in the short term. Maven 2 will slow Maven’s adoption probably for at least six months, and probably into 2006 as the new Maven stabilizes.
Why my pessimism? Maven developers shot themselves in the foot by scrapping the goal of Maven 2’s backwards compatibility with Maven 1, and introducing new technologies just as obscure as Maven 1’s technologies. Barriers for Ant users to adopt Maven have always been Maven’s steep learning curve, its scripting language (Jelly), and its semi-enforced ways of organizing a project’s files. Now, Maven 2 will change Maven in drastic ways. Maven 2 scraps Jelly in favor of (I’m not kidding) Marmalade. And the favored way of writing Maven 2 plugins will be Mojos, which seems to be Java classes that get inserted into a Maven 2 Plexus IoC container. Not only does Maven 2 introduce an IoC container, it uses one that almost no one has heard of.
In short, why would an Ant user today even considering switching to Maven? If you aren’t using Maven today, going to the trouble of learning Maven 1, only to be left with a tool that quickly becomes outdated as Maven developers leave it in the dustbin, would be a waste of time. For those who hate Maven to the point of bile or poetry, Maven’s slower adoption won’t mean anything. But for Ant users interested in learning Maven today, the Maven team seems to be saying “don’t bother, wait for Maven 2.”
If you think I’m exaggerating, here are quotations about Maven 2 from the Maven web site:
- “Maven 2.0 is a complete rewrite. It will not be backwards compatible with any of the Maven 1.x releases”
- “Maven 2.0 will feel very different to a Maven 1.0 user – and perhaps a little strange”
- “Plugins … are the only way to script your builds”
- “…significant new features will not be added to the Maven 1.0 core”
- “Will my Maven 1.0 plugins be supported? Not directly”
On the positive side of Maven 2, once it matures it might help solve the complexities and slowness in Maven 1 and eventually win over more Ant users. That is, maybe they must kill Maven in order to save it.