Apache IVY - Penyelesai
Resolver digunakan untuk menemukan lokasi dari mana perpustakaan akan diunduh. Penyelesai ketergantungan juga menangani tugas-tugas umum. Ivy menyediakan dua jenis Resolver.
Composite - Penyelesai yang menggunakan resolver lain untuk melakukan tugasnya.
Standard - Penyelesai melakukan tugas yang diperlukan.
Penyelesai Standar
Tabel berikut mencantumkan resolver standar dan penggunaannya.
Sr.No. | Nama (Jenis) & Deskripsi |
---|---|
1 | IvyRep (Standard) Menemukan file Ivy di ivyrep dan artefak di ibiblio. |
2 | IBiblio (Standard) Menemukan artefak di ibiblio. |
3 | BinTray (Standard) Menemukan artefak di bintray. |
4 | Packager (Standard) Menemukan file Ivy dan instruksi pengemasan melalui URL, membuat artefak menggunakan instruksi. |
5 | FileSystem (Standard) Menemukan file dan artefak Ivy di sistem file lokal. |
6 | URL (Standard) Menemukan file dan artefak Ivy di repositori yang dapat diakses menggunakan URL. |
7 | MirroredURL (Standard) Menemukan file dan artefak Ivy di repositori yang dapat diakses menggunakan URL dari daftar cermin. |
8 | VFS (Standard) Menemukan file dan artefak Ivy di repositori yang dapat diakses menggunakan Apache Commons VFS. |
9 | SSH (Standard) Menemukan file dan artefak Ivy di repositori yang dapat diakses menggunakan SSH. |
10 | SFTP (Standard) Menemukan file dan artefak Ivy di repositori yang dapat diakses menggunakan SFTP. |
11 | Jar (Standard) Menemukan file dan artefak Ivy di repositori dalam toples. |
12 | Chain (Composite) Mendelegasikan pencarian ke rangkaian sub resolver. |
13 | Dual (Composite) Mendelegasikan pencarian ke satu resolver dan artefak ke yang lain. |
14 | OBR (Standard) Selesaikan modul sebagai bundel OSGi yang terdaftar oleh OSGi obr.xml. |
15 | Eclipse updatesite (Standard) Selesaikan modul sebagai bundel OSGi yang dihosting di situs pembaruan Eclipse. |
16 | OSGi-agg (Composite) Mendelegasikan pencarian ke rangkaian sub resolver yang mendukung bundel OSGi. |
Mari buat Tester.java, build.xml dan ivy.xml di proyek baru di bawah E: > ivy2folder seperti yang dijelaskan dalam IVY - Menyelesaikan bab Tugas . Buat folder pengaturan di bawahE: > ivy2. Buat ivysettings.xml di folder pengaturan.
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>
Di sini kami telah menambahkan dua dependensi, satu dari library commons-lang dan lainnya sebagai tes yang kami terbitkan di bab 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>
Di sini kami telah menambahkan membuat resolver komposit menggunakan resolver berantai yang memiliki dua resolver, satu perpustakaan bernama untuk mencari perpustakaan di repositori lokal dan satu bernama ibiblio di repositori publik maven.
Membangun proyek
Karena kami sudah menyiapkan semua file. Pergi saja ke konsol. Navigasi keE: > ivy2 folder dan jalankan perintah semut.
E:\ivy > ant
Ivy akan beraksi, menyelesaikan dependensi, Anda akan melihat hasil berikut.
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
Di log Anda dapat memverifikasi bahwa kami telah menggunakan resolver repositori lokal dan publik.