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.
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 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.
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
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.
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.
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.