Apache IVY - Resolvers

Resolvers são usados ​​para encontrar locais de onde uma biblioteca deve ser baixada. Um resolvedor de dependências também lida com tarefas comuns. Ivy oferece dois tipos de Resolvers.

  • Composite - Um resolvedor que usa outros resolvedores para fazer suas tarefas.

  • Standard - Um resolvedor executa as tarefas necessárias.

Resolvedores Padrão

A tabela a seguir lista os resolvedores padrão e seu uso.

Sr. Não. Nome (tipo) e descrição
1

IvyRep (Standard)

Localiza arquivos Ivy em ivyrep e artefatos em ibiblio.
2

IBiblio (Standard)

Localiza artefatos no ibiblio.
3

BinTray (Standard)

Localiza artefatos na bandeja do compartimento.
4

Packager (Standard)

Localiza arquivos Ivy e instruções de empacotamento por meio de URLs, cria artefatos usando instruções.
5

FileSystem (Standard)

Localiza arquivos e artefatos Ivy no sistema de arquivos local.
6

URL (Standard)

Localiza arquivos e artefatos Ivy em repositórios que podem ser acessados ​​usando URLs.
7

MirroredURL (Standard)

Localiza arquivos e artefatos Ivy em repositórios que podem ser acessados ​​usando URLs de uma lista de espelhos.
8

VFS (Standard)

Localiza arquivos Ivy e artefatos em repositórios que podem ser acessados ​​usando o Apache Commons VFS.
9

SSH (Standard)

Localiza arquivos e artefatos Ivy em repositórios que podem ser acessados ​​usando SSH.
10

SFTP (Standard)

Localiza arquivos e artefatos Ivy em repositórios que podem ser acessados ​​usando SFTP.
11

Jar (Standard)

Localiza arquivos e artefatos Ivy em repositórios dentro de um jar.
12

Chain (Composite)

Delega a pesquisa a uma cadeia de sub-resolvedores.
13

Dual (Composite)

Delega a pesquisa a um resolvedor e artefatos a outro.
14

OBR (Standard)

Resolva os módulos como pacotes OSGi listados por um OSGi obr.xml.
15

Eclipse updatesite (Standard)

Resolva os módulos como pacotes OSGi que são hospedados em um site de atualização do Eclipse.
16

OSGi-agg (Composite)

Delega a pesquisa a uma cadeia de sub-resolvedores que oferecem suporte a pacotes OSGi.

Vamos criar Tester.java, build.xml e ivy.xml em um novo projeto em E: > ivy2pasta semelhante à descrita no capítulo IVY - Resolve Task . Crie uma pasta de configurações emE: > ivy2. Crie o ivysettings.xml na pasta de configurações.

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>

Aqui, adicionamos duas dependências, uma da biblioteca commons-lang e outra como teste, que publicamos no 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>

Aqui, criamos um resolvedor composto usando o resolvedor de cadeia que tem dois resolvedores, um nomeado bibliotecas para localizar bibliotecas no repositório local e um nomeado ibiblio no repositório público maven.

Construindo o projeto

Como temos todos os arquivos prontos. Vá para o console. Navegar paraE: > ivy2 pasta e execute o comando ant.

E:\ivy > ant

Ivy entrará em ação, resolvendo as dependências, você verá o seguinte 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

Nos logs, você pode verificar se usamos os resolvedores de repositório local e público.