Maven has a lot of interesting and useful ideas, but its usage is often over-complicated and several concepts are too much entangled. (examples: 1, 2, 3)
The foremost feature of Maven that comes to mind is probably dependency management. Maven probably standardized dependency management for the Java platform. That’s probably also the reason for its wide adoption.
At this time there are already several attempts for smaller and easier solutions that repackage the ideas about dependency management from Maven. Their promise is to be a cleaner and easier to use.
Foremost there is Ivy, which provides Maven-like dependency management for Ant.
There are even two JRuby projects that bring simplified Maven-like dependency management to the JVM: maven_gem and javagems.
Especially interesting is Grape, which provides dependency management for Groovy at a language level (by integrating Ivy).
I think these examples are an impressive demonstration how the Java platform grows and how good ideas and concepts are adapted and evolved.
I've used Maven in the past and have always become frustrated at some point. When it works, it is great. When it breaks, it can be very painful. It got to the point that I decided to spin my own Ant+Ivy+Groovy build system that, oddly enough, uses the Maven directory structure and life-cycle. I like it because I have total control over every aspect of the build. We'll see if Gradle will mature to the point where I'll want to switch to it.
ReplyDeleteMaven was and is horrible. The only thing it provides for the java world is a more or less usefull package format. I use Ant+Ivy+Nexus for build and dependency management. Especially Nexus is very valuable....
ReplyDeleteI have faith in Gradle.
ReplyDeleteI have seen quite some really lousy builds. Especially Ant/Ivy powered ones. And I have seen tools that even to not grasp the need for a repeatable and dependable build system.
ReplyDeleteActually Maven does have a steep learning curve, although after I've left that behind me I never found a real point to complain about.
There have been issues, although there was fast and good support.
Plus lovely IDE integration and finally a decent way to enable cooperation between teams and use real no-brainer-abstraction.
Go bring your complaints to Maven and make it better.
Just doing the Linux way of rolling 5000 custom tools that do the same stuff with minimal differences, all incompatible, all mediocre some of them not even tackling the root cause will not advance the industry.
Just my nasty 2cents.
Gradle. www.gradle.org - Maven levels of functionality, a nice Groovy based DSL for easy of use.
ReplyDeleteThere's still lots of work to be done, but it's got 90% of Maven functionality for 95% of users.
I've worked with Maven on several teams and am currently the build manager for a team. I've said this before, but it's still true: the people who have t he most problems or complaints typically don't understand how to use it correctly. In my experience, when someone shows them how to do something correctly the complaints disappear. That said, Maven does have a bit of a learning curve for new devs or those familiar only with the verbosity of Ant.
ReplyDeletedependency management is a first point where maven brought big time saving. Another one is a standardized build process and built-in good practices (convention over configuration). Of course maven has big pains too but in the end, I still can't see any viable alternative. jigsaw, buildr, gradle, etc. we'll see...
ReplyDelete