Apache Ivy is a very popular and very powerful dependency management tool used to manage dependencies in ANT based projects in the same fashion, how Apache Maven manages dependencies.
Apache Ivy is Apache ANT based, follows same design principles, is a subproject of Apache ANT and is actively managed and supported by Apache ANT Community.
Following are the important features of Apache Ivy.
ANT Based − Apache Ivy provides a dependencies management capability to ANT based projects. It is very simple to use as well.
Dependency Reports − Apache Ivy provides options to print dependencies graph in html as well as in reports format.
Non-intrusive − Apache Ivy don't impose any restrictions as to be part of distribution. Even build files are not dependent on Apache Ivy.
Highly Flexible − Apache Ivy provides lots of default configurations and can be configured as per the requirement very easily.
Extendible − Apache Ivy can be extended easily. You can define your own repository, conflict resolvers and latest strategy.
Performance − Apache Ivy is built towards performance. It keeps a cache of library already downloaded. Looks into local repositories first to resolve dependencies than look into other repositories.
Transitive Dependencies − Apache Ivy automatically manages transitive dependencies if one project or library depends upon other library which may need another library.
Maven Repository − Apache Ivy follows conventions similar to Maven repository conventions. Apache Ivy can resolve dependencies using maven global repository.
Maven 2 POMs − Apache Ivy can read Maven 2 POMs as module descriptors, can set ivy as module descriptor. Thus it makes easy to migrate existing projects to IVY managed projects.
Publishing − Apache Ivy provides supports to publish your project and simplifies the multi-project environment deployment process.
Free to Use − Apache Ivy is open source and is free to use.
Documentation − Apache Ivy has a very detailed documentation and tutorials available to learn.