Maven is NOT going away


July 6, 2008 By Brian Fox

A recent blog post posited “Is Maven going away?”. Almost certainly the title is FUD trolling for visitors as the main issue posed is easily solved by a well known plugin. It’s been a long time coming, but the stars are aligning for some serious movement in the Maven world…

Firstly, a 2.0.10 RC should be coming soon as John has been chipping away at issues. Similar to the 2.0.9 release, we are focusing 2.0.10 on killing regressions introduced in previous releases and tackling the most popular issues.

Secondly, Jason and Oleg have been working hard to complete the rewrite of the Maven Artifact module. This introduces more reliable transport layers and more correct dependency range resolution via a SAT algorithm. An Alpha of the M-A is expected soon and then an Alpha of 2.1 shortly thereafter.

The Alphas of 2.1 lay the groundwork to solving some of the largest issues with 2.0. Things like Lifecycle introspection and Pom format flexibility in the form of pluggable project builder techniques. This will allow Model upgrades as we move forward, one thing that caused us much pain in 2.0 as many proper fixes or great ideas required subtle changes in the model.

To top it all off, Maven is getting some first-class citizen support in the IDE.

So to answer the question, no, Maven is not going away. We’re just getting started.

Update: Josh pointed out that my blog didn’t address Warner’s core complaint of Maven. It wasn’t really my intent to do that here because I posted a comment on his blog to show him how to easily do what he wanted to do. Here’s my longer response to the core issue:

The core issue raised by Warner seems to be that Maven doesn’t support multiple languages out of the core.

The fact is that Maven doesn’t really support any languages out of the box as everything is done by plugins. Yes, the model by default doesn’t support multiple src folders.

However, in order to compile/generate something other than Java, you need a compiler plugin written to handle this. That same compiler plugin can add as many src folders as it sees fit. The whole idea is that the plugin should do the work and provide sensible conventions to make it easier for the user.

The goal of the core is to make this possible for the plugins. If we start throwing in tons of model changes to support every edge case, then we’ve really lost the Convention over Configuration, a key Maven concept.

The NMaven project is a good example of what can be done with the current Maven core. The trunk version of this code essentially adds on new plugins that define packaging and lifecycles to build .NET artifacts.

The Nar set of plugins are another good example of defining whole new processes via plugins and lifecycles. If those things are possible without modifying the model, surely most other languages can be supported also?

If no, then lets discuss it on the Maven list where a proper proposal can be put together and then implemented.