Maven Sucks.

You might think that was a silly thing for a Maven evangelist to say, but compare me to any other evangelist and it's easy to see the similarities. If I was an evangelist for the Foo Religion I would be saying things like "sure it's a challenge to be a Fooist but the benefits are Footernity" or something like that. I wouldn't be saying it had no cost. It sucks to be a Fooist, people throw darts at me and all kinds of nasty things happen.

Maven offers it's own kind of Footernity in that if you can only make it through the second project, everything from that point gets very easy.

mvn package
mvn assembly:assembly
mvn deploy

..... Stuff like that. No matter what project, no matter who built it, where the jars are, whatever. It really is like Footernity, wonderful benefits.

Now the bad news. 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. So you would say it is way tooooooo high a cost. And you would be right except for it's a one time cost. You learn it, then all your projects follow the same model, and it's a one time (but high) cost.

Graeme Rocher is smarter than I am, and I don't mean a little bit smarter. He is probably 20 times smarter than me, and maybe you too ? Just look at Grails if you need proof. Brilliant stuff. He has rallied against Maven for over a year now because Maven is such a pain in the ass, and he is right. Maven is all about standards and fitting to one system, Grails is all about breaking the mold and doing things a new, better, non-standard way.

I just wish he realized that people will eventually make Grails a standard ! Yup ! That's what I'm going to do. Just like I do with everything else I build, spring, log4j, etc.  I make it part of my standard setup. (OK I have 4 or 5 standard setups for the differerent standard projects I work with, but they are all variations on standard Maven builds.) 

So he needs to eventually get with the program and figure out how help guys like me make Grails fit into a standard Maven build.

I run one script (OK it's a shell script, sorry) ./makeNewWhatever.sh which kicks off a customized maven project creation routine. Been using it for all my projects over a year, wraps the complexity of Maven multiple step project creation into one file where I just change the args for the type of archetype and which workspace and naming convention it follows. From then on it's strictly dumb easy maven commands. Really need to make this a Gant script, much more elegant.

For all his brilliance, Graeme Rocher still doesn't get that he will eventually have to make Grails fit some kind of nasty Maven standard build structure. I don't see how it will happen yet, because the non-standard default (non) packaging and convention over configuration thing makes a pretty big obstacle. But it will happen, because Grails is too cool not to incorporate into all my Maven projects. It's going to happen, I just don't know how.

The standards must die !  Long live the standards !

[EDITOR'S NOTE] This article was moved from here where more comments still live.