Some Notes About the Negatives

You will find a curious thing on the web, if you do a google search on "maven sucks" or similar type search.

Especially around 2004 and 2005, but still even currently, you will find some rabbid rants. You might quickly conclude that people really hate Maven and that it really does suck.

Yeah, Me Too

Anyone that's been using it for a few years is going to have the same list of rants. I'll put a few of mine below.

So Is It Really That Bad ?

So go back over the rants on the web, as mentioned above. "Wait a minute, these guys rant and rant, but they just keep coming back for more. "

Then you start to observe that the worst critics are like Matt Raible. They rant and rant and rant, but bottom line is they never leave, they never consider an alternative, they are die hard enthusiasts.

So is it that bad then ? Well, yes and no.

What really happens ?

It doesn't happen as much in 2006 and 2007, but you'll be working along and one of the plugins won't work. Nevermind that it probably isn't an important thing, something like a report you never look at anyway, or somthing you could easily do with ant tasks. It starts to really piss you off.

Here is an enumeration of problems I've had since summer of '06

  • The javadoc plugin freaked out on me and wouldn't work. I think it was a documentation/user error, but it left me a couple hours digging and finally I just gave up, used eclipse.
  • The checkstyle plugin quit working
  • The assembly plugin sort of worked, but then after everything looked like it worked perfectly but the manifest file didn't work for some reason. A day after messing with it, I finally just wrote a silly .bat file to do the kickoff that I wanted, and said to heck with it.
  • I tried to use maven's automatic deployment mechanism one day and figured out that it might take more than 15 minutes for me to figure out all the security interworkings from my windows box into the https server and so I didn't even try.
  • Spent about half a day figuring out why my eclipse build worked fine but my maven build was blowing up on the new generics stuff that I had just added. And only after a "maven clean". Finally broke down and IM'd a buddy who explained that Maven uses java 1.3 compile rules unless you tell it otherwise, and Maven also doesn't compile if Eclipse already has, so ..... tweaked some configuration files, resolved now. But can I have my half day back please ?

So the bottom line is you need to expect some problems. But note that none of the above problems actually ever affected core funtionalities, more like stuff that was really cool but I could still work without it.

Maybe not being able to run checkstyle isn't that big a deal. Checkstyle did suddenly started working for me again, by the way, javadocs somehow fixed itself.

So goes life with Maven.

Not to Mention

Past years, especially when I moved from Maven 1 to Maven 2, my stories of - ahem - "adjustment" to the requirements of handling other people's unversioned jars was painful. I got it down now, but that was not a pleasant period.

Proper Defense

  • I try to remember to use ant liberally, whenever I start spending more than 5 minutes on a problem that isn't worth it. You can write ant calls right into your pom.xml file like you would a maven plugin, so why get nutty about purity if it's not worth the time ?
  • GIVE UP QUICK ! Most of the problems are you will experience with Maven won't be deal killers, stuff like reporting and such. So unless you really need checkstyle reports, just comment out the plugin from your pom.xml and go on about your life.
  • Rely on friends. Sure you can spend a few hours googling through mail lists, but sometimes it's just easier to ping Bob Byron or someone else that you know, and ask him what he did.

And if you hate XML

There is one more serious problem with Maven if you somehow learned to hate xml. There are times when I fit in that camp, so I'll make a note here about my personal experiences.

Maven is all about xml configuration, which means that it gets the same complaint as with all xml, easy to create linkages that only make sense to the author and aren't diagragmed anywhere except in words in docs, and even then, only if you are lucky. Makes it easy to break something and never know why or how.

At least in java, the compiler tells you when something is broken, and intellisense types things for you.

So it's easy to break things without realizing it, and don't even think about relying on an xml schema to catch your errors (though it is actually improving in that area !).

Now you have been warned.