Apache Ivy 简明教程

Apache IVY - Resolvers

解析器用于查找下载信息库的位置。依赖关系解析器还处理常见任务。Ivy 提供了两种类型的解析器。

  1. Composite − 一个使用其他解析器执行其任务的解析器。

  2. Standard − 一个执行所需任务的解析器。

Standard Resolvers

下表列出了标准解析器及其用法。

Sr.No.

Name (Type) & Description

1

IvyRep (Standard) 定位 ivyrep 上的 Ivy 文件和 ibiblio 上的制品。

2

IBiblio (Standard) 定位 ibiblio 上的制品。

3

BinTray (Standard) 在 bintray 中定位工件。

4

Packager (Standard) 通过 URL 定位 Ivy 文件和打包说明,使用说明创建工件。

5

FileSystem (Standard) 在本地文件系统上定位 Ivy 文件和工件。

6

URL (Standard) 在可通过 URL 访问的存储库上定位 Ivy 文件和工件。

7

MirroredURL (Standard) 在可通过镜像列表中的 URL 访问的存储库上定位 Ivy 文件和工件。

8

VFS (Standard) 在可通过 Apache Commons VFS 访问的存储库上定位 Ivy 文件和工件。

9

SSH (Standard) 在可通过 SSH 访问的存储库上定位 Ivy 文件和工件。

10

SFTP (Standard) 在可通过 SFTP 访问的存储库上定位 Ivy 文件和工件。

11

Jar (Standard) 在 jar 内的存储库上定位 Ivy 文件和工件。

12

Chain (Composite) 将搜索委托给一个子解析器链。

13

Dual (Composite) 将搜索委托给一个解析器,将工件委托给另一个解析器。

14

OBR (Standard) 将模块作为 OSGi obr.xml 列出的 OSGi bundle 解析。

15

Eclipse updatesite (Standard) 将模块作为托管在 Eclipse 更新站点上的 OSGi bundle 解析。

16

OSGi-agg (Composite) 将搜索委托给支持 OSGi bundle 的一个子解析器链。

让我们在 E: > ivy2 文件夹如下所描述类似的新项目中创建 Tester.java、build.xml 和 ivy.xml。在 E: > ivy2 下创建一个 settings 文件夹。在 settings 文件夹中创建 ivysettings.xml。

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>

在这里,我们添加了两个依赖项,一个用于 commons-lang 库,另一个用于我们在 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>

在这里,我们添加了使用 chain resolver 创建的一个复合解析器,它有两个解析器,一个名为 library,用于在本地存储库中定位库,一个名为 ibiblio,用于在 maven 公共存储库中定位库。

Building the project

当我们准备好了所有文件。只需进入控制台。导航到 E: > ivy2 文件夹并运行 ant 命令。

E:\ivy > ant

Ivy 将执行操作,解析依赖关系,您将看到以下结果。

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

在日志中你可以验证我们同时使用了本地和公共存储库解析器。