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

35,299

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.

Share:
35,299
Pmt
Author by

Pmt

Java developer.

Updated on July 09, 2022

Comments

  • Pmt
    Pmt almost 2 years

    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!

  • Pmt
    Pmt about 11 years
    Really thanks for the explanations!
  • Guillaume Polet
    Guillaume Polet over 10 years
  • pratnala
    pratnala over 10 years
    You're my saviour @prunge!
  • satender
    satender almost 7 years
    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.