Apache Ant
Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications.
Apache Ivy - Apache Ant 的一个子项目
Apache Ivy™ is a popular dependency manager focusing on flexibility and simplicity.
Ant & Ivy 操作示例
ivysettings.xml 文件用于配置从中下载有依赖关系的 JAR 文件的存储库。
示例:
<ivysettings>
<settings defaultResolver="chained"/>
<resolvers>
<chain name="chained" returnFirst="true">
<filesystem name="libraries">
<artifact pattern="${ivy.conf.dir}/repository/[artifact]-[revision].[type]" />
</filesystem>
<url name="integratebutton">
<artifact pattern="http://www.integratebutton.com/repo/[organisation]/[module]/
[revision]/[artifact]-[revision].[ext]" />
</url>
<ibiblio name="ibiblio" />
<url name="ibiblio-mirror">
<artifact pattern="http://mirrors.ibiblio.org/pub/mirrors/maven2/[organisation]/
[module]/[branch]/[revision]/[branch]-[revision].[ext]" />
</url>
</chain>
</resolvers>
</ivysettings>
ivy.xml 文件用于描述项目对其他类库的依赖。
示例:
<ivy-module version="2.0">
<info organisation="apache" module="hello-ivy"/>
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.0"/>
<dependency org="commons-cli" name="commons-cli" rev="1.0"/>
</dependencies>
</ivy-module>
dependencies 部分让你定义依赖。这里这个模块依赖两个类库:commons-lang 和 commons-cli。如你所看到的,我们使用 org 和 name 属性来定义我们需要的依赖的组织和模块名。rev 属性用于明确说明你依赖的模块的修订版本。
为了知道如何填写这些属性,你需要知道你依赖的类库的准确信息。ivy 默认使用 maven2 仓库。我们推荐你使用 http://mvnrepository.com 来查找你需要的模块。一旦你找到它,你将得到如何在一个 maven POM 中声明依赖的细节。例如:
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.0</version>
</dependency>
对应的 build.xml 文件包含一个 target 集合,容许解析在 ivy 文件中声明的依赖,编译并运行示例代码,生成依赖解析报告,并清理项目的缓存。
<target name="resolve" description="retrieve dependencies with ivy">
<ivy:retrieve />
</target>
这里我们只使用了一个任务:retrieve 任务。没有任何属性,它将使用默认设置并查找名为 ivy.xml 的文件来获取依赖定义。
Ivy 依赖报告
Ivy 提供了一个任务,用于报告一个项目中的依赖文件。
<target name="ivy-report" depends="init-ivy">
<ivy:report todir="${target.dir}/reports/ivy"/>
</target>