当前位置: 首页 > 工具软件 > Apache Ivy > 使用案例 >

Apache Ivy-1.快速开始

华君浩
2023-12-01

        目前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-moduleversion属性告诉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 

 类似资料: