Personally, I still don't like Maven(even maven3)
are there really any better alternatives? Ivy? Buildr?
i'd prefer Ant, maybe ivy, gradle seems good, I'd like to control things myself, maven's idea is good, the impl is horrible, most time you spent in the proj is fixing the broken dependency, or find a good repo, and the version mess. i'd like just download a zip, unzip it and life is good.
However, Maven is far more than just lib-management (dependencies to repos).
I must admit, I do not have experiences using ivy or gradle.
Now that Hibernate switched to Gradle, it seems prove my point. Plus I have some more problems with Maven (I mean Maven3.0GA, it's just the same old stuff, the promises are not implemented):
1. It doesn't support multiple src/test folders for different compile options still (some sources are only available for JDK1.6, and some are only for JDK1.4, the building system will automatically determine which should be included depends the version of JDK you use for compile).
2, Not all dependencies from the Maven Repo, for example, I need to include jars (weblogic jars or some spring jars) from my local folders, don't say use
systemscope or install to local repo, they are lame.
3, It's really doesn't support multiple modules, especially for testing, for example I tried to use Arquillian, I need some helper classes for warping the jars with dependent jars, it should be shared cross the modules, and only for testing, Maven doesn't like that(what a lame), instead I have to put these deadly simple classes into all the modules' test folder.
4, Maven repo is really messy, especially when you cross several repos, some version are not in here but in there, or you need setup a
Proxyfor that. So often I found it works on one machine, but when run another machine, it broke miserably.
There are more pain points, I have to say if its just for a small CRUD project, it's alright to use Maven, with a little bigger project, the time you spent on fixing maven is pretty much over 50% of the total time.
only one piece of advise for anyone working with maven, use nexus/artifactory/archiva or any other maven proxying or mirroring tool for your internal network..to proxy all requests through this repository and you will almost never face any sad day with maven.
I personally use artifactory, and have control of a couple of projects of medium complexity (13 - 14 modules each), and i believe if you know maven (like RTFM) it should not be a problem.
and I beleive maven has been a great help in getting programmers/team members on and off the team within a matter of days rather than weeks and months which used to be there before maven.
I hope i had helped...but i believe this has turned into a rant. thanks for the privelge of forums that one can have some voice.