目前Apache Ivy的最新版本是2.5.0。下载路径:Download | Apache Ivy
1、什么是Apache Ivy?
Apache Ivy是一个用于管理(记录、跟踪、解析和报告)项目依赖关系的工具,其特点是灵活,可配置以及与Apache Ant紧密集成。
2、快速开始
在没有特定设置的情况下,Ivy默认使用Maven 2中央存储库来解析您在Ivy文件中声明的依赖项。下面是一个 ivy.xml 文件描述项目对其他库的依赖关系的简单示例:
<ivy-module version="2.0">
<info organisation="org.apache" module="hello-ivy"/>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.0"/>
<dependency org="commons-cli" name="commons-cli" rev="1.0"/>
</dependencies>
</ivy-module>
其中,
ivy-module
的version
属性告诉ivy,该文件与哪个最低版本的Ivy兼容。info
标签提供了关于我们为其定义依赖项的模块的信息,其中organization
为组织名称,module
为模块名称。dependencies
用于定义多个依赖项。每个依赖项由dependency标签定义,其中org代表组织名称,name代表模块名称,rev代表模块的版本。我们可以通过访问:mvnrepository.com 来查找需要的依赖。3、构建文件
相应的构建文件(build.xml)包含一组目标,允许您解析Ivy文件中声明的依赖项,编译和运行示例代码,生成依赖项解析报告,以及清理缓存或项目。您可以使用标准的 ant -p 命令来获取可用目标的列表。
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="run">
<!-- =================================
target: resolve
================================= -->
<target name="resolve" description="--> retrieve dependencies with Ivy">
<ivy:retrieve/>
</target>
</project>
上面的示例中,调用Ivy来解析和检索依赖关系非常容易:如果Ivy安装正确,您所需要做的就是在Ant文件中定义XML名称空间。然后,所有Ivy Ant任务都将在此命名空间中可用。 这里我们只使用一个任务:检索任务。如果没有属性,它将使用默认设置并查找名为ivy的文件,即依赖项定义的xml文件。注意,在本例中,我们定义了一个解析目标并调用检索任务。实际上检索任务先执行解析(解析依赖项并将其下载到缓存),然后执行检索(将这些文件复制到本地项目目录)。
4、执行构建
如果没有任何设置,Ivy将从Maven 2存储库检索文件。首先,解析任务在Maven 2中央存储库中找到了commons-lang和commons-cli模块,确定了commons-cli依赖于commons-logging,因此将其解析为可传递依赖项。然后,Ivy将所有相应工件下载到缓存中(默认情况下,在用户家目录的.ivy2/cache目录中)。最后,检索任务将已解析的jar从Ivy缓存复制到项目的默认库目录:lib目录。
Buildfile: E:\workspace\hello-ivy\build.xml
default:
[ivy:retrieve] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy/ ::
[ivy:retrieve] :: loading settings :: file = E:\workspace\hello-ivy\ivysettings.xml
[ivy:retrieve] :: resolving dependencies :: org.apache#hello-ivy;working@PC210037
[ivy:retrieve] confs: [default]
[ivy:retrieve] found org.apache.commons#commons-lang3;3.0 in public
[ivy:retrieve] found junit#junit;4.7 in public
[ivy:retrieve] found org.easymock#easymock;2.5.2 in public
[ivy:retrieve] found commons-cli#commons-cli;1.0 in public
[ivy:retrieve] found commons-logging#commons-logging;1.0 in public
[ivy:retrieve] found commons-lang#commons-lang;1.0 in public
[ivy:retrieve] :: resolution report :: resolve 122ms :: artifacts dl 13ms
[ivy:retrieve] :: evicted modules:
[ivy:retrieve] junit#junit;3.7 by [junit#junit;4.7] in [default]
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 7 | 0 | 0 | 1 || 10 | 0 |
---------------------------------------------------------------------
[ivy:retrieve] :: retrieving :: org.apache#hello-ivy
[ivy:retrieve] confs: [default]
[ivy:retrieve] 5 artifacts copied, 5 already retrieved (253kB/16ms)
BUILD SUCCESSFUL
Total time: 532 milliseconds