Maven or Ivy? Which one is better with a system already in production? And the other differences?

Pmt picture Pmt · Mar 22, 2013 · Viewed 32.8k times · Source

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!

Answer

prunge picture prunge · Mar 22, 2013

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.