Maven 3 - Worth it?

Manoj picture Manoj · Jul 1, 2010 · Viewed 13.4k times · Source

Maven 3 beta is out since a couple of weeks and I just want to get your views on the feature list for Maven 3. Because to me, only two major features were added

  1. Parallel execution of of project in the build lifecycle
  2. Custom lifecycle

Everything else seems like a bug fix or a minor improvement. So what do you think? Will Maven 3 be worth the wait?

Answer

Pascal Thivent picture Pascal Thivent · Jul 2, 2010

What's new in Maven 3? Here is a little compilation of what you can find around the net.

  • Backward compatibility - Maven 3 is backward compatible, that is extremely important (especially for those who experienced the Maven 1 to Maven 2 transition).
  • Versionless parent elements - Maven 3 will remove the need to specify the parent version in sub modules. THIS is great (in Maven 3.1).
  • Mixins - For POM composition (in Maven 3.1 AFAIK).
  • XML POM format using attributes - You can use attributes instead of elements.
  • Polyglot Maven - You can write your POM files now in different languages (I'm personally not annoyed by the XML format so I'm not sure I'll use this that often).
  • Extensions points - To decorate the lifecycle or plugins (to hook behavior instead of extending plugins).
  • Queryable lifecycle - Decoupling of execution plans and execution.
  • Changes in the Plugin-API - This is more targeted at plugins developers (annotations instead of javadoc tags, extensions points, queryable lifecycle).
  • Better error and integrity reporting - Errors are more clear and linked to the Maven 3 wiki for a detailed explanation. Users will enjoy this.
  • Mercury - Complete rewrite of the artifact resolution system (which is now a dedicated product) Actually, Maven 3 uses Aether instead of Mercury.
  • Maven Embedder - This is great for IDEs and build tools (that can "listen" to the build process).
  • Incremental build support - especially useful for M2Eclipse (big performance boost).
  • Site and reporting extracted from Maven core - site doesn't work yet (will be fixed for the final release), reporting does (but you are invited to favor external quality tools like Sonar).
  • Maven shell - An optimized execution environment (Maven Shell is awesome).

To summarize, you're not totally wrong, there aren't that many changes at the surface (although I really enjoy the better error reporting and just can't wait for the version-less parent elements stuff). But the changes under the hood make Maven 3 much faster and this is huge. And I expect great innovations to happen with the new offered possibilities (yet to come though).

At the end, the performance improvement is already enough to make it worth for me (building in less time is extremely valuable) and other things are bonuses. And since I'm not using the site plugin extensively, I'm already using Maven 3 for more than 4 months on some of my builds and I'm more than happy with it.

See also