Apache IVY - 解析器

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

  • 复合 − 使用其他解析器来完成其任务的解析器。

  • 标准 − 解析器执行所需的任务。

标准解析器

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

Sr.No. 名称(类型)& 描述
1

IvyRep(标准)

定位 ivyrep 上的 Ivy 文件和 ibiblio 上的工件。
2

IBiblio(标准)

查找 ibiblio 上的工件。
3

BinTray(标准)

定位 bintray 上的工件。
4

Packager(标准)

通过 URL 查找 Ivy 文件和打包指令,使用指令创建工件。
5

文件系统(标准)

定位本地文件系统上的 Ivy 文件和工件。
6

URL(标准)

定位可使用 URL 访问的存储库上的 Ivy 文件和工件。
7

MirroredURL(标准)

定位存储库上的 Ivy 文件和工件,可以使用镜像列表中的 URL 进行访问。
8

VFS(标准)

定位可使用 Apache Commons VFS 访问的存储库上的 Ivy 文件和工件。
9

SSH(标准)

定位可使用 SSH 访问的存储库上的 Ivy 文件和工件。
10

SFTP(标准)

定位可使用 SFTP 访问的存储库上的 Ivy 文件和工件。
11

Jar(标准)

在 jar 内的存储库上查找 Ivy 文件和工件。
12

Chain (复合)

将搜索委托给子解析器链。
13

Dual (复合)

将搜索委托给一个解析器,将工件委托给另一个解析器。
14

OBR(标准)

将模块解析为 OSGi obr.xml 列出的 OSGi 捆绑包。
15

Eclipse updatesite (标准)

将模块解析为托管在 Eclipse 更新站点上的 OSGi 捆绑包。
16

OSGi-agg(复合)

将搜索委托给支持 OSGi 包的子解析器链。

让我们在 E: > ivy2 文件夹下的新项目中创建 Tester.java、build.xml 和 ivy.xml,类似于 IVY - 解决任务中所述 章。 在 E: > ivy2 下创建一个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 - 发布任务 章中发布的测试。

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>

这里我们添加了使用链解析器创建的复合解析器,它有两个解析器,一个命名库用于在本地存储库上查找库,另一个名为 ibiblio 在 maven 公共存储库上。

构建项目

我们已经准备好了所有文件。 只需转到控制台即可。 导航到 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	est\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

在日志中,您可以验证我们是否使用了本地和公共存储库解析器。