56

I know that this is a complicated question, but I would like know which one is better in the case of a system that it's already in production, with a lot of bugs and really bad design at all. A really mess.

Actually, I'm asking this because I'm already converting this project to Maven and I'm facing A LOT of problems. I needed to adjust the folder structure, separate a terrible framework made at the company from the project (it was converted into a jar lib), fix a lot of details that broke the project all the time, configure the POM.xml to make everything that Ant was already doing and discover the libs that are really used in the application as their versions (a big part of the libs was renamed without the version number and the manifest file was empty).

Well, it was a really hell. I went crazy during this task and the question that followed me all the time was "And if I was converting it to Ivy? Would be easier?".

I never worked with Ivy, but as I know it work with Ant and it's easier then Maven to adapt the project. On the other hand, Maven it's much more used allover the word (Am I wrong?) and this should have a reason!

So there it's my questions:

  • Integration with Jenkins / Hudson: With Ivy it's so easy as with Maven?
  • Sonar plugin: Same question above. The integration it's simple to?
  • Plugin for Eclipse: This is a very weak point of Maven. The plugin terrible, but I don't know the Ivy ones.
  • Deploy process: Once that it's everything configured, deploy and publish the project with maven it's extremely easy. And with Ivy?
  • Conversion: Well, my experience in converting a project to Maven was terrible, but the system didn't helped. The option that I had was that Maven it's amazing to new projects, projects working with Maven since it was created, but not a good choice if you have a big and unorganized project. Am I wrong?
  • Plugins: That it's A LOT of plugin to be configured into POM.xml. Is there so many option for Ivy?
  • Popularity: Which on is more popular? Which one is more used and why?

Well, it's this. Thanks a lot!

Prince
  • 20,353
  • 6
  • 39
  • 59
Pmt
  • 1,122
  • 3
  • 13
  • 27
  • You should ignore popularity. Both maven and ivy are well supported :) – Jayan Mar 22 '13 at 01:56
  • There are too many comparison. I hope they may give you an idea., e.g. http://stackoverflow.com/questions/318804/maven-or-ivy-for-managing-dependencies-from-ant http://java.dzone.com/articles/maven-vs-ivy-numbers http://docs.codehaus.org/display/MAVEN/Feature+Comparisons http://ant.apache.org/ivy/m2comparison.html http://www.google.com/trends/explore#q=apache%20maven,%20apache%20ivy – Charlee Chitsuk Mar 22 '13 at 02:50
  • 1
    We've been going through the same decision over the last year or so, and settled on Ant+Ivy. If we were starting from scratch, Maven would probably be the choices. You probably won't need any plugins for Ivy. One downside: getting community help with problems is much harder for Ivy, because the community is so much smaller. Look at the delays in answers (and non-answers) to questions about it here on StackOverflow to see what I mean. – Ed Staub Mar 22 '13 at 14:27
  • @EdStaub I agree with you! Now I can see clearly. Choose Ant/Ivy whould be the best choise, but I choosed the worst one. Now I'm about to finish the conversion to Maven, so it's done. Pacience. About the community, take a look at the last link sent by CharleeChitsuk. It shows exactly what are you saying. Thanks a lot. – Pmt Mar 22 '13 at 21:01

1 Answers1

86

First of all, read the Ivy / Maven comparison from the Ivy website. The key information:

First, the most important difference is that they aren't at all the same kind of tools. Apache Maven is a software project management and comprehension tool, whereas Apache Ivy is only a dependency management tool, highly integrated with Apache Ant™, the popular build management tool. So maybe a more interesting comparison would compare Apache Ant+Ivy vs Apache Maven. But this goes beyond the scope of this page which concentrates on dependency management only.

Ivy adds dependency management functionality to Ant, so really, the question in terms of what build system you use is either:

  • use Ivy/Ant
  • migrate to Maven

If your build is already using Ant, Ivy will be an easier transition since your build scripts don't need to be ported to a different build system.

If you decide to transition to Maven it will require more effort, because you need to rewrite your build scripts and Mavenize everything as well as configure your dependency management.

It will also be easier to port your dependency management configuration from Ivy/Ant to Maven if you ever decide to go in that direction. So Ivy dependency management would be a good stepping stone for in the long term for going to a Maven configuration.

prunge
  • 22,460
  • 3
  • 73
  • 80
  • 2
    @PimentaDev. [This link provides a very good and fair comparison over both.](http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/) – Guillaume Polet Oct 04 '13 at 14:36
  • You're my saviour @prunge! – pratnala Oct 21 '13 at 07:21
  • Just to add to above : Maven follows a fixed structure on the project. Maven has a fixed set of scopes based on which dependencies are defined. On the other hand Ivy does not require a structure. Ivy allows users to use arbitrary code layout and scope. – satender Jun 16 '17 at 11:52
  • The link in the comment above is broken and now appears to link to advertising. The original link content is here: https://web.archive.org/web/20130909162842/http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/ – Luke Needham Mar 23 '23 at 13:02