Apache Ivy is a
transitive package manager
A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals w ...
. It is a sub-project of the
Apache Ant
Apache Ant is a software tool for automating software build processes which originated from the Apache Tomcat project in early 2000 as a replacement for the Make build tool of Unix. It is similar to Make, but is implemented using the Java langu ...
project, with which Ivy works to resolve project dependencies. An external
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. ...
file defines project dependencies and lists the resources necessary to build a project. Ivy then resolves and downloads resources from an artifact repository: either a private repository or one publicly available on the
Internet
The Internet (or internet) is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a ''internetworking, network of networks'' that consists ...
.
To some degree, it competes with
Apache Maven
Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation, where it was ...
, which also manages dependencies. However, Maven is a complete build tool, whereas Ivy focuses purely on managing transitive dependencies.
History
Jayasoft first created Ivy in September, 2004, with Xavier Hanin serving as the principal
architect
An architect is a person who plans, designs and oversees the construction of buildings. To practice architecture means to provide services in connection with the design of buildings and the space within the site surrounding the buildings that h ...
and
developer of the project. Jayasoft moved hosting of Ivy (then at version 1.4.1) to
Apache Incubator
Apache Incubator is the gateway for open-source projects intended to become fully fledged Apache Software Foundation projects.
The Incubator project was created in October 2002 to provide an entry path to the Apache Software Foundation for proj ...
in October 2006. Since then, the project has undergone package renaming to reflect its association with the
Apache Software Foundation. Package names prefixes of the form
fr.jayasoft.ivy
have become
org.apache.ivy
prefixes.
Ivy graduated from the
Apache Incubator
Apache Incubator is the gateway for open-source projects intended to become fully fledged Apache Software Foundation projects.
The Incubator project was created in October 2002 to provide an entry path to the Apache Software Foundation for proj ...
in October, 2007. As of 2009 it functions as a sub-project of
Apache Ant
Apache Ant is a software tool for automating software build processes which originated from the Apache Tomcat project in early 2000 as a replacement for the Make build tool of Unix. It is similar to Make, but is implemented using the Java langu ...
. Over time, Ivy has been used in
sbt (until sbt 1.3),
grails (until 2014),
gradle
Gradle is a build automation tool for multi-language software development. It controls the development process in the tasks of compilation and packaging to testing, deployment, and publishing. Supported languages include Java (as well as Kotli ...
(until 2012),
and
Jenkins.
Features
* Managing project dependencies
* XML-driven declaration of project dependencies and JAR repositories
* Automatic retrieval of
transitive dependency definitions and resources
* Automatic integration to publicly available artifact repositories
* Resolution of dependency closures
* Configurable project state definitions, which allow for multiple dependency-set definitions
* Publishing of artifacts into a local enterprise repository
See also
*
Apache Maven
Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation, where it was ...
, an alternative dependency management and build tool
References
* Steve Loughran, Erik Hatcher:
Ant in Action, Manning Publications Company,
*
External links
*
Automation for the people: Manage dependencies with Ivyby Paul Duvall
{{Apache Software Foundation
Java development tools
Ivy
''Hedera'', commonly called ivy (plural ivies), is a genus of 12–15 species of evergreen climbing or ground-creeping woody plants in the family Araliaceae, native to western, central and southern Europe, Macaronesia, northwestern Africa and ...
Build automation