Apache Ant学习笔记之一
©原作者:Matt Chapman
•Apache Ant源缘及目的
Apache Ant 是一个基于 Java 的生成(在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式)工具。
最初的创始人 James Duncan Davidson
Ant=another neat tool
Ant 最初是 Tomcat 的一个内部组件
其第一个独立版本于 2000 年 7 月发布。
它是为了解决:
随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本,这就变得更加重要了。 |
•Ant工具概要
Ant 的生成文件是用 XML 编写的。每个生成文件由单个 project 元素组成,该元素又包含一个或多个 target 元素。
顶级 project 元素需要包含一个 default 属性,如果在 Ant 被调用时没有指定目标,这个属性将指定要执行的目标。
target是生成过程中已定义的一个步骤,它执行任意数量的操作。
如下是一个最简单的文件:
<?xml version="1.0"?> <target name="init" description="Initialize Argon database"> |
需要说明的是:
1.XML 声明指定了所使用的 XML 的版本,这不是当前的 Ant 所必需的
2.一次性打开和关闭一个元素是允许的,如:<target name="init"/>,当元素没有包含任何内容时,更简练的形式会更清晰。
3.XML 注释可以使用在整个生成文件中以提高清晰性。而且,Ant 定义了它自己的 description 元素和 description 属性,它们可用于提供更结构化的注释。
应该了解的一些基本概念
•属性
可以这样定义属性:
<property name="metal" value="beryllium"/> |
为了在生成文件的其他部分引用这个属性,要使用以下语法:
${metal} |
例如,为了使用这样一个值,它是另一个属性的值的组成部分,标签要写成下面这样:
<property name="metal-database" value="${metal}.db"/> |
属性分为预定义属性和自定义属性:
—预定义的属性:
运行 Ant 的所有系统属性,均可作为 Ant 属性使用,如:
${user.home}
—自定义属性:
${ant.version},这个属性包含 Ant 的版本;
${basedir},这个属性是项目目录的绝对路径(由包含生成文件的目录所定义,或者由 project 元素的可选 basedir 属性所定义)。
Ant 的 location 属性专门设计用于以平台无关的方式包含文件系统路径。您会像下面这样使用 location 来代替value:
<property name="database-file" location="archive/databases/${metal}.db"/> |
在可能的地方使用相对路径名称而不是绝对路径名称,这样还会更加灵活。
•定义依赖关系
使用 target 元素的 depends 属性来实现,每个目标的定义依据的是在它在能够执行之前必须完成的其他所有目标。如:
<target name="init"/> |
目标出现在生成文件中的顺序并不重要:执行顺序是由 depends 属性唯一确定的。
•使用命令行来运行Ant
如果你敲入Ant后回车,默认情况下Ant 寻找一个名为 build.xml 的文件来执行。
Ant 使用 -buildfile <file> 参数(-f <file> 是其简写形式)你可以指定要执行的生成文件。
-D选项用于设置随后可以在生成文件中使用的属性。
例如,为了将 name 属性设置为某个特定的值,您会使用一个类似下面这样的选项:-Dmetal=beryllium |
这个功能可用于覆盖生成文件中的初始属性设置。正如前面指出过的,属性的值一经设置就不能改变。-D 标志在读取生成文件中的任何信息之前设置某个属性;由于生成文件中的指派落在这个初始指派之后,因此它不会改变其值。
编写常用的target
Ant 的主要目标是生成 Java 应用程序,它能够内在地支持调用 javac 编译器以及其他 Java 相关任务。 |