Es un gestor de dependencias, orientado a la gestión de dependencias de Java, aunque puede utilizarse para gestionar dependencias de cualquier tipo de proyecto. El funcionamiento básico de Ivy se basa en un archivo descriptor llamado ivy.xml, donde se declaran las dependencias del proyecto y sus configuraciones. Ivy se encarga de resolver estas dependencias, descargarlas desde repositorios configurados y organizarlas en el proyecto de acuerdo a las reglas definidas.
Archivo de ejemplo ubicado en la raíz del proyecto
$ nano ivy.xml
xml
<ivy-module version="2.0">
<info organisation="miempresa" module="mimodulo"/>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>
</ivy-module>
Este ejemplo indica que el proyecto depende de la librería commons-lang3 versión 3.12.0.
Para utilizar Ivy con Ant, se debe declarar el uso de las tareas de Ivy en el archivo build.xml y luego invocar tareas como "resolve" y "retrieve" para gestionar las dependencias
$ nano build.xml
<project name="ejemplo" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="resolve" description="Resuelve dependencias">
<ivy:resolve/>
<ivy:retrieve sync="true" type="jar"/>
</target>
</project>
Descarga las dependencias declaradas en ivy.xml y copia los archivos descargados, por ejemplo, los .jar a un directorio del proyecto, como lib/.
$ ant resolve
$ ant retrieve