Apache IVY - Resolver

Resolver werden verwendet, um Speicherorte zu finden, von denen eine Bibliothek heruntergeladen werden soll. Ein Abhängigkeitsauflöser erledigt auch allgemeine Aufgaben. Ivy bietet zwei Arten von Resolvern an.

  • Composite - Ein Resolver, der andere Resolver verwendet, um seine Aufgaben zu erledigen.

  • Standard - Ein Resolver führt die erforderlichen Aufgaben aus.

Standard-Resolver

In der folgenden Tabelle sind die Standardauflöser und ihre Verwendung aufgeführt.

Sr.Nr. Name (Typ) & Beschreibung
1

IvyRep (Standard)

Findet Ivy-Dateien auf Ivyrep und Artefakte auf Ibiblio.
2

IBiblio (Standard)

Findet Artefakte auf ibiblio.
3

BinTray (Standard)

Findet Artefakte auf dem Bintray.
4

Packager (Standard)

Findet Ivy-Dateien und Verpackungsanweisungen über URLs und erstellt mithilfe von Anweisungen Artefakte.
5

FileSystem (Standard)

Findet Ivy-Dateien und Artefakte im lokalen Dateisystem.
6

URL (Standard)

Findet Ivy-Dateien und Artefakte in Repositorys, auf die über URLs zugegriffen werden kann.
7

MirroredURL (Standard)

Findet Ivy-Dateien und Artefakte in Repositorys, auf die über URLs aus einer Spiegelliste zugegriffen werden kann.
8

VFS (Standard)

Findet Ivy-Dateien und Artefakte in Repositorys, auf die mit Apache Commons VFS zugegriffen werden kann.
9

SSH (Standard)

Findet Ivy-Dateien und Artefakte in Repositorys, auf die über SSH zugegriffen werden kann.
10

SFTP (Standard)

Findet Ivy-Dateien und Artefakte in Repositorys, auf die über SFTP zugegriffen werden kann.
11

Jar (Standard)

Findet Ivy-Dateien und Artefakte in Repositorys in einem Glas.
12

Chain (Composite)

Delegiert die Suche an eine Kette von Sub-Resolvern.
13

Dual (Composite)

Delegiert die Suche an einen Resolver und Artefakte an einen anderen.
14

OBR (Standard)

Lösen Sie Module als OSGi-Bundles auf, die in einer OSGi-Datei obr.xml aufgeführt sind.
15

Eclipse updatesite (Standard)

Lösen Sie Module als OSGi-Bundles auf, die auf einer Eclipse-Update-Site gehostet werden.
16

OSGi-agg (Composite)

Delegiert die Suche an eine Kette von Sub-Resolvern, die OSGi-Bundles unterstützen.

Lassen Sie uns Tester.java, build.xml und ivy.xml in einem neuen Projekt unter erstellen E: > ivy2Ordner ähnlich wie im Kapitel IVY - Aufgabe auflösen beschrieben . Erstellen Sie einen Einstellungsordner unterE: > ivy2. Erstellen Sie die Datei ivysettings.xml im Einstellungsordner.

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>

Hier haben wir zwei Abhängigkeiten hinzugefügt, eine der Commons-Lang-Bibliothek und eine andere als Test, die wir im Kapitel IVY - Publish Task veröffentlicht haben .

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>

Hier haben wir einen zusammengesetzten Resolver mit Chain Resolver erstellt, der zwei Resolver enthält, eine mit dem Namen Bibliotheken zum Suchen von Bibliotheken im lokalen Repository und einen mit dem Namen ibiblio im öffentlichen Repository von maven.

Das Projekt aufbauen

Da haben wir alle Dateien fertig. Geh einfach zur Konsole. Navigieren Sie zuE: > ivy2 Ordner und führen Sie den Befehl ant aus.

E:\ivy > ant

Ivy wird in Aktion treten und die Abhängigkeiten auflösen. Sie werden das folgende Ergebnis sehen.

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

In den Protokollen können Sie überprüfen, ob wir sowohl lokale als auch öffentliche Repository-Resolver verwendet haben.