Apache IVY - Resolvedores

Los resolutores se utilizan para buscar ubicaciones desde donde se descargará una biblioteca. Un solucionador de dependencias también maneja tareas comunes. Ivy proporciona dos tipos de Resolvers.

  • Composite - Un resolutor que utiliza otros resolutores para realizar sus tareas.

  • Standard - Un resolutor realiza las tareas necesarias.

Resolvedores estándar

La siguiente tabla enumera los resolutores estándar y su uso.

No Señor. Nombre (tipo) y descripción
1

IvyRep (Standard)

Localiza archivos de Ivy en ivyrep y artefactos en ibiblio.
2

IBiblio (Standard)

Localiza artefactos en ibiblio.
3

BinTray (Standard)

Localiza artefactos en bintray.
4

Packager (Standard)

Localiza archivos de Ivy e instrucciones de empaque a través de URL, crea artefactos usando instrucciones.
5

FileSystem (Standard)

Localiza archivos y artefactos de Ivy en el sistema de archivos local.
6

URL (Standard)

Localiza archivos y artefactos de Ivy en repositorios a los que se puede acceder mediante URL.
7

MirroredURL (Standard)

Localiza archivos y artefactos de Ivy en repositorios a los que se puede acceder mediante URL de una lista duplicada.
8

VFS (Standard)

Localiza archivos y artefactos de Ivy en repositorios a los que se puede acceder mediante Apache Commons VFS.
9

SSH (Standard)

Localiza archivos y artefactos de Ivy en repositorios a los que se puede acceder mediante SSH.
10

SFTP (Standard)

Localiza archivos y artefactos de Ivy en repositorios a los que se puede acceder mediante SFTP.
11

Jar (Standard)

Localiza archivos y artefactos de Ivy en repositorios dentro de un frasco.
12

Chain (Composite)

Delega la búsqueda a una cadena de sub-resolutores.
13

Dual (Composite)

Delega la búsqueda a un resolutor y los artefactos a otro.
14

OBR (Standard)

Resuelva los módulos como paquetes OSGi enumerados por un obr.xml OSGi.
15

Eclipse updatesite (Standard)

Resuelva los módulos como paquetes OSGi que están alojados en un sitio de actualización de Eclipse.
dieciséis

OSGi-agg (Composite)

Delega la búsqueda a una cadena de sub-resolutores que admiten paquetes OSGi.

Creemos Tester.java, build.xml y ivy.xml en un nuevo proyecto en E: > ivy2carpeta similar a la descrita en el capítulo IVY - Resolver tarea . Cree una carpeta de configuración enE: > ivy2. Cree el archivo ivysettings.xml en la carpeta de configuración.

build.xml

<project name="test" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
   <property name = "build.dir" value = "build"/>
   <property name = "base.dir" value = ""/>
   <target name="resolve" description="resolve dependencies">
      <ivy:resolve />
   </target>
   <target name="compile" depends="resolve" description="Compile">
      <mkdir dir="build/classes" />
      <javac srcdir="src" destdir="build/classes">
         <classpath refid="new.classpath" />
      </javac>
   </target>
</project>

ivy.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
   <info organisation="org.apache" module="chained-resolvers"/>
   <dependencies>
      <dependency org="commons-lang" name="commons-lang" rev="2.6" conf="default"/>
      <dependency org="com.tutorialspoint" name="test" rev="1.0"/>
   </dependencies>
</ivy-module>

Aquí hemos agregado dos dependencias, una de biblioteca commons-lang y otra como prueba que publicamos en el capítulo IVY - Publish Task .

ivysettings.xml

<ivysettings>
   <settings defaultResolver="multiresolver"/>
   <resolvers>
      <chain name="multiresolver">
         <filesystem name="libraries">
            <artifact pattern="${ivy.settings.dir}/repository/[artifact]-[revision].[ext]"/>
         </filesystem>
         <ibiblio name="ibiblio" m2compatible="true"/>
      </chain>
   </resolvers>
</ivysettings>

Aquí hemos agregado un resolutor compuesto utilizando un resolutor de cadena que tiene dos resolutores, uno llamado bibliotecas para ubicar bibliotecas en el repositorio local y otro llamado ibiblio en el repositorio público de maven.

Construyendo el proyecto

Ya que tenemos todos los archivos listos. Solo ve a la consola. Navegar aE: > ivy2 carpeta y ejecute el comando ant.

E:\ivy > ant

Ivy entrará en acción, resolviendo las dependencias, verás el siguiente resultado.

Buildfile: E:\ivy2\build.xml

resolve:
[ivy:resolve] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy
/ ::
[ivy:resolve] :: loading settings :: url = jar:file:/E:/Apache/apache-ant-1.9.14
/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:resolve] :: resolving dependencies :: org.apache#chained-resolvers;working@
Acer-PC
[ivy:resolve]   confs: [default]
[ivy:resolve]   found commons-lang#commons-lang;2.6 in public
[ivy:resolve]   found com.tutorialspoint#test;1.0 in local
[ivy:resolve]   found junit#junit;3.8.1 in public
[ivy:resolve] downloading C:\Users\Acer\.ivy2\local\com.tutorialspoint\test\1.0\
jars\application.jar ...
[ivy:resolve] .. (1kB)
[ivy:resolve] .. (0kB)
[ivy:resolve]   [SUCCESSFUL ] com.tutorialspoint#test;1.0!application.jar (13ms)

[ivy:resolve] :: resolution report :: resolve 1085ms :: artifacts dl 22ms
      ---------------------------------------------------------------------
      |                  |            modules            ||   artifacts   |
      |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
      ---------------------------------------------------------------------
      |      default     |   3   |   3   |   1   |   0   ||   5   |   1   |
      ---------------------------------------------------------------------

BUILD SUCCESSFUL
Total time: 9 seconds

En los registros puede verificar que hemos utilizado resolutores de repositorios tanto locales como públicos.