4

I'm confused regarding Ivy, Maven and Archiva - they all seem to be trying to solve similar problems.

I think that I'm right in thinking that Ivy retrofits Maven-like functionality to Ant (i.e. Ant + Ivy ~= Maven)? But I'm unclear about what Archiva adds (if anything) to Ant + Ivy and/or Maven. When would I use (say) Ivy, when would I use Archiva and when would a combination make sense (if at all)?

Background: We need to put some kind of dependency management and build artefact archival in place. Our source is cross-language (a mix of C++, Java, Scala, Ruby and Python) and our build process is cross-platform (Linux, Windows, OSX, Android, iOS, QNX). We have an existing scons-based build system which is somewhat intricate. Ideally we want to add dependency management and artefact archival to this, rather than (say) moving wholesale to Maven.

Paul Butcher
  • 10,722
  • 3
  • 40
  • 44
  • I highly recommend avoid Maven as build tools for non-Java-world projects. For artifact repository look to my question/answer: http://stackoverflow.com/questions/7104191/recommend-build-artifact-repository-manager – gavenkoa Apr 25 '13 at 06:54

1 Answers1

9

Originally one of the big advantages Maven had over Ant was the ease of dependency management, but you are right in that Ivy has now come along to fit that gap, meaning that Ant+Ivy provides some similar functionality to Maven in terms of build and dependency management.

Now that both provide dependency management, one of the big differentiating factors is Mavens use of "Convention over configuration". Some people prefer Ant as it is more flexible/powerful for custom task/builds where as some people prefer maven as its a lot more succinct and simpler.

It will depend on the complexity of your builds, if you have basic Java builds then Maven might be more suited as the pom files (Maven build filds) are pretty simple, but if you need to do a lot of custom specific stuff you may well end up having Ant scripts to perform (also, if you already have one system in place there isnt necessarily a huge advantage of swapping).

Archiva is something different from Ant+Ivy/Maven - Archiva is a webapplication that provides a UI to easily manage all the JAR files in your repository. Generally they can be quite nice for your build team to easily control and monitor all the JARs that are being used across your project. You would use Archiva hand-in-hand with Maven to manage your central maven repository.

Also worth noting is that from my experience, there are some alternatives to Archiva such as Nexus and Artifactory, which may be a better fit (archiva wouldnt be my first choice in repo management) - check out this discussion of differences between nexus/artifactory Should we use Nexus or Artifactory for a Maven Repo?

Community
  • 1
  • 1
rhinds
  • 9,976
  • 13
  • 68
  • 111
  • Thanks. So what does Archiva add over and above a "vanilla" Ivy or Maven repository? – Paul Butcher May 20 '11 at 13:58
  • 1
    Archiva is purely a web application to manage your repository. Your repository is just all you JARs on a file system, so would have to use putty/windows explorer to view/delete/etc JARs in your repo. With Archiva, you have to host the application on a server like tomcat, but then you can just view and manage your libraries via a nice web interface – rhinds May 20 '11 at 14:03
  • Great - thanks! That makes things much clearer (and gives me other avenues to explore too). – Paul Butcher May 20 '11 at 14:33