Ant 使用指南
Java 爱好者 第 2页 http://www.javafan.net
第一章 入门
本教程所讲述的内容
在本教程中,您将学习 Ant 这个 Java
TM
项目生成工具。由于其灵活性和易用性,Ant 很快在 Java
开发人员中流行开来,因此您有必要了解关于它的更多信息。
在继续学习本教程之前,你不需要具备先前的 Ant 经验或知识。我们将首先查看 Ant 生成文件
(build file)的基本结构,并学习如何调用这个工具。我们将逐步完成为一个简单 Java 项目编
写生成文件的步骤,然后考察 Ant 的其他一些有用功能,包括文件系统操作和模式匹配。最后编写
一个扩展 Ant 功能的自己的 Java 类来结束本教程。
在学习本教程的过程中,我们将同时展示如何从命令行以及从其他开放源代码 Eclipse IDE 运行
Ant。试验本教程中的例子不需要同时具备这两种环境;您可以选择其一,甚至选择某种不同的开发
环境,只要该环境支持 Ant。如果选择从命令行使用 Ant,并且 Ant 还没有安装到机器上,您需要
遵循 Ant 主页上的安装说明。相反,如果决定仅使用 Eclipse 环境,您不需要单独安装 Ant,因
为 Eclipse 已经包括了它。如果还没有 Eclipse,您可以从 Eclipse.org 下载 Eclipse。
谁应该学习本教程?
如果您正在编写 Java 代码却还没有使用 Ant,那么本教程就是为您准备的。不管您当前是否在使
用某种不同的生成工具,或者根本就没有使用生成工具,了解关于 Ant 的更多知识或许会促使您转
而使用它。
如果已经在使用 Ant,那么您仍然可能在本教程中发现一些有趣的东西。或许您会发现一些预料之
外或无法完全理解的 Ant 行为;本教程将会帮助您。或者,也许您熟悉 Ant 的基础,但是还想知
道诸如将生成文件链接起来、使用 CVS 知识库或编写自定义任务等高级主题;本教程将会介绍所有
这些主题。
Ant 使用指南
Java 爱好者 第 3页 http://www.javafan.net
Ant 主要是设计用于生成 Java 项目的,但这并不是它唯一的用途。许多人发现它对其他任务也很
有帮助。比如以跨平台的方式执行文件系统操作。此外,还有许多可用的第三方 Ant 任务,而编写
自定义的 Ant 任务也是相对简单的,因此很容易针对特定的应用程序定制 Ant。
关于作者
Matt Chapman 1996 是英国 Hursley 的 IBM Centre for Java Technology 的咨询软件工程师。他
过去七年来一直致力于 Java 技术,包括 Java 虚拟机实现和各类平台、用户界面工具包 Swing 和
AWT,以及近来为 Eclipse 平台所编写的工具。Matt 拥有计算机科学方面的学位,并 且还是一名 Sun
认证的 Java 程序员。可通过 mchapman@uk.ibm.com 与他联系。
第二章 Ant 基础
简介
本节将概述 Ant 的功能和优势,并 讨论它的历史概况和日渐提高的普及性。然后我们通过考察一个
最基础的生成文件的基本结构,直接进入对 Ant 基础的讨论。我们还会介绍 属性 和 依赖关系 的
概念。
Ant 是什么?
Apache Ant 是一个基于 Java 的生成工具。据最初的创始人 James Duncan Davidson 介绍,这个
工具的名称是 another neat tool(另一个整洁的工具) 的首字母缩写。
生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可
安装的产品映像形式)。随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确
相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本,这就变得更加重要
Ant 使用指南
Java 爱好者 第 4页 http://www.javafan.net
了。C 或 C++ 中的传统项目经常使用 make 工具来做这件事情,其中生成任务是通过调用 shell 命
令来执行的,而依赖关系定义在每个生成文件之间,以便它们总是以必需的顺序执行。
Ant 与 make 类似,它 也定义 生成文件之间的依赖关系;然而 ,与使用特定于平台的 shell 命令来
实现生成过程所不同的是,它使用跨平台的 Java 类。使用 Ant,您能够编写单个生成文件,这个
生成文件在任何 Java 平台上都一致地操作(因为 Ant 本身也是使用 Java 语言来实现的);这就
是 Ant 最大的优势。
Ant 的其他关键优势包括其突出的简单性和无缝地使用自定义功能来扩展它的能力。但愿您在完成
本教程其余内容的学习之后,会欣赏 Ant 的这些优势。
Ant 简史
Ant 最初是 Tomcat 的一个内部组件,Tomcat 是 Java Servlet 和 JavaServer Pages (JSP) 参考
实现中使用的 servlet 容器。Tomcat 代码基被捐赠给了 Apache 软件基金会;在那里它又成了
Apache Jakarta 项目的组成部分,该项目致力于为 Java 平台产生开放源代码的服务器端解决方
案。Ant 的有用性很快得到了认可,对它的使用遍布在其他 Jakarta 子项目中。因而,它自己也成
了一个 Jakarta 子项目,其第一个独立版本于 2000 年 7 月发布。
从那以后,Ant 的普及性已经不断地提高。它赢得了无数的行业大奖,并成为用于生成开放源代码
Java 项目的 事实上 的标准。2002 年 11 月,这 些 成 功 得 到 了 确 认 ,Ant 被提升为顶级 Apache 项
目。
在本文编写之际,Ant 的当前稳定版本是 1.5.4,它支持 1.1 以后的所有 JDK 版本。下一个版本
(即 1.6 版)的 beta 版也已经可用,这些版本需要 JDK 1.2 或更高版本。未来的 2.0 版也正在
计划之中,它将涉及一次重大的体系结构重新设计。Ant 2.0 将以改进的一致性和增强的功能为特
色,同时仍然保持 Ant 的简单性、易于理解性和可扩展性等核心目标。
Ant 生成文件剖析
Ant 使用指南
Java 爱好者 第 5页 http://www.javafan.net
Ant 没有定义它自己的自定义语法;相反,它的生成文件是用 XML 编写的。存在一组 Ant 能够理
解的预定义 XML 元素,而且就像您将在下一节中看到的一样,还可以定义新的元素来扩展 Ant 的
功能。每个生成文件由单个 project 元素组成,该元素又包含一个或多个 target 元素。一个目标
(target)是生成过程中已定义的一个步骤,它执行任意数量的操作,比如编译一组源文件。这些
操作本身是由其他专用任务标签执行的,我们将在后面看到这一点。然后这些任务将根据需要被分
组到各个 target 元素中。一次生成过程所必需的所有操作可以放入单个 target 元素中,但是那
样会降低灵活性。将那些操作划分为逻辑生成步骤,每个步骤包含在它自己的 target 元素中,这
样通常更为可取。这样可以执行整体生成过程的单独部分,却不一定要执行其他部分。例如,通过
仅调用某些目标,您可以编译项目的源代码,却不必创建可安装的项目映像。
顶级 project 元素需要包含一个 default 属性,如 果 在 Ant 被调用时没有指定目标,这个属性将
指定要执行的目标。然后需要使用 target 元素来定义该目标本身。下面是一个最基本的生成文件:
<?xml version="1.0"?>
<project default="init">
<target name="init">
</target>
</project>
注意这是一个结构良好的 XML 文档,其中一个 XML 声明指定了所使用的 XML 的版本(这不是当前
的 Ant 所必需的,但是这样做是一个好习惯),而且每个元素都正确地关闭了。 一次性打开和关
闭一个元素也是可以做到的。因此,与其像上面那样对 target 元素使用单独的起始和结束标签,
我们可以将它写为如下形式:
<target name="init"/>
当元素没有包含任何内容时,更简练的形式会更清晰。
添加描述:
我们在前一小节中看到的生成文件是优雅简练的,但它并没有包含多少关于正在生成的实际项目的
信息。可以通过许多方式来使它更具描述性,同时无需改变其功能。下面是一个例子:
评论0