This is an updated entry about using maven vs. using ant+ivy.
All my previous comments are still valid, maven is not just the automatic dependency download or the transitive dependencies, but let’s focus in these two aspects.
Some facts:
- Ivy uses the maven 1 repository at ibiblio to get the jars, which is mantained and administered by the maven project.
- The ivy repository only hosts metadata about 55 artifacts, while the maven 2 repo has metadata for more than 4000 projects (I’ve excluded poms smaller than 200 bytes)
The main problems we have at maven is missing or incorrect metadata, so if there’s any Ivy user reading this I’d like to know what’s the point of using it when only a few projects have metadata. And while in maven is a collective open effort, seems that it’s not like that with Ivy.
If I’d like to use ant for my build (never again if I can avoid it, specially since we have the antrun plugin), I’d choose the m2 ant tasks, that as a side effect allows you to also run maven, providing a good migration path.
We dont have access to remote repository in our development environment and setting up and running ivy+repository locally has been a breeze. The team adapted quickly as well because the ivy’s simplicity. I would say Ivy if you only need dependency management and stuck with local repository.
The problems with Maven are:
– Transitive dependency management is incomplete compared to Ivy (or at least it was last I looked at M2)
– The Maven repositories are crap. They’re not complete and the descriptor files for the releases are inconsistent.
We happily use Ivy + Ant at work with a repository that we manage locally. It’s really not that much work, and it makes it very easy to add modules to our projects.
Re: Maven repositories are crap, if you need the metadata in Ivy you will be using the m2 repos with crap or write it yourself, and if you do the last it will be unmanageable