Apache Ivy is a popular dependency manager focusing on flexibility and simplicity. It has some overlapping functionality with [MavenNotes "Apache Maven"], but it only does one thing (dependency management), and it does it very well.
The advantages of using a dependency manager include:
- central repository (eventually, see below)
- dependencies need not be in subversion (eventually, see below)
- transitive dependency management (i.e. we say we need X, if X depends on Y it will come automatically)
- conflict management between dependencies (easier upgrading of dependencies)
- much easier integration testing. We can have different build configurations for release, development and test, release using fully tested jars, development using latest releases and/or milestones
- easier continuous integration testing
- full dependency reports (i.e. better developer docs)
Comparison to Maven
Ivy is able to use Maven repositories, so it has the same level of access to managed resources as Maven. However, Ivy does not provide any of the build tools that Maven provides. To some this is a disadvantage, it can take longer to set up your project with Ivy. To others this is an advantage, you are not constrained by the way Maven wants you to work.
Apache Ivy + Apache Ant provides an extremely powerful and flexible build management and dependency management tool, whereas Apache Maven provides a less flexible, but more simple tool.