Wednesday, February 20, 2008

Why Maven Sucks (as compared to good old ant)


Maven is a build tool for Java. It suuuuuuuuuucks. I am not alone in thinking this.

Get out while you still can.
[Ship, 2007]

Any other community would be like "what the hell is this?"
[Rocher, 2008]

While you may think of the Maven 2 version you downloaded as building your code, it actually is just an engine that by itself, can't build squat. When you start Maven 2, it will try to download the latest and greatest of every core plugin, the bits that actually do the work. This means that even though two developers are using Maven 2.0.8, they could be using different plugin versions and therefore, the build is not consistent.
[Brown, 2008] (Maven patch submitter)

Maven suffers from a lack of flexibility and robustness
[Hanin, 2008]

It might cost you as much time to build your first Maven project as it does to LEARN Ant and build your first complex project.
[Carapetyan, 2008] (Maven evangelist)

Do they have a chapter called "Why do the repositories suck so much?" :)
[TSS Comment on free Maven book]

It introduces additional dependencies in your build process.

- Dependencies suck. The simple formula for operational availability is to multiply the availabilities of the interdependent systems. When you start with maven, there are a lot more things that have to be running- just to be able to compile some code. This is a measurable cost.

It introduces additional complexity in your build process.
- You are adding a lot of code to a project by adding Maven. You are adding dependent jars without necessarily knowing where they came from. If you build your own jar repository- it is a significant amount of work. If you don't, you are at the mercy of the Internet.

It is hard to debug when something is going wrong.

It took us a couple of days to get working. And then it immediately broke again. With completely different errors on three separate developer machines.

The side of evil will persistently keep trying to shoehorn maven into their projects and pretend they’re enjoying it. The side of good would rather gnaw off their own unmentionables than touch maven, and merrily keep getting things done faster, better, and lighter with ant (without paying Bruce Tate any denomination of any currency).
[Hani, 2004]

[Edit, 2009]
New graph of Maven adoption curve! 


Go check out the above link for more...

maven.png

9 comments:

Ronan said...

No way, Maven is excellent and so powerful. I was able to knock out a full build process for 20+ projects in about 3 hours.

Admittedly, this is with Maven 1 not 2. And it is a little slow to start up the engine, so running things like "maven nightly" on a project takes longer to start up the engine than it does to actually do its work, but if you're building loads of projects together, its great for automatically working out the build order and dependency linking is great too.

Anonymous said...

People who defend Maven have very little to say about what to do when Maven is broken. If the tool can't handle the 'edge cases', then it's worthless. If it makes a large project impossible to build, then it's only good for small projects. And if it's only good for small projects, then it's worthless, since for small projects I can use Ant.

Anonymous said...

another comment: Maven says "you can use Ant". So... what, now two XML vocabularies to learn? This is a step forward? This is pure foolishness. I'm going to laugh at all the Maven users when Sun comes out with something much, much better thought out and debugged.

Anonymous said...

check apache buildr

Anonymous said...

maven is a great tool of equality. it wasters every minute i saved with senseless repo downloads. and the way HOW to configure the integration of environment specific prop files used by spring later from cp is - simply said - horrible.

Sergei said...

Maven definitely sucks from the very beginning when you have to create a repository instead of old good classpath. When you are finally up and running you are dealing with Maven errors instead of your project exceptions.

Lukesterx said...

Please see http://lukesamad.blogspot.com/ a more complete idea of what maven is. Thanks for all your comments, they helped me is putting this together.

No Gods Required said...

From start to finish maven sucks.

SkaRootz said...

If you know maven you are going to love it for the easy it makes IDE integration and dependency downloading, if you don't take the time to get to know it (really hard at the beginning) it sucks