Ant 使用指南
Java 爱好者 第 7页 http://www.javafan.net
Ant 中有许多预定义的属性。首先,Java 环境设置用于运行 Ant 的所有系统属性,均可作为 Ant 属
性使用,比如 ${user.home} 。除了这些属性之外,Ant 还定义了它自己的一小组属性,包括
${ant.version},这个属性包含 Ant 的版本;以及 ${basedir},这个属性是项目目录的绝对路径
(由包含生成文件的目录所定义,或者由 project 元素的可选 basedir 属性所定义)。
属性经常用于引用文件系统上的文件或目录,但是对于使用不同路径分隔符(例如,/ 与 \)的平
台来说,这样可能在跨越不同平台时导致问题。Ant 的 location 属性专门设计用于以平台无关的
方式包含文件系统路径。您会像下面这样使用 location 来代替 value:
<property name="database-file" location="archive/databases/${metal}.db"/>
用于 location 属性的路径分隔字符将被转换为当前平台的正确格式;而且由于文件名是相对的,
它被认为是相对于项目的基目录。我们同样可以容易地写为下面这样:
<property name="database-file" location="archive\databases\${metal}.db"/>
这个标签的两个版本都会在不同的平台具有相同的行为。如果可移植性是必需的,唯一要避免的内
容就是文件名中的 DOS 风格的驱动器号。在 可能的地方使用相对路径名称而不是绝对路径名称,这
样 还 会 更 加 灵活。
定义依赖关系
生成一个项目一般需要许多步骤 —— 例如首先要编译源代码,然后将它打包为 Java 归档文件
(Java Archive File,JAR)。这其中许多步骤都具有清楚定义的顺序 —— 例如,在编译器从源
代码生成类文件之前,您不能打包类文件。与顺序指定 target 所不同的是,Ant 采用一种更灵活
的方法来定义 依赖关系 ,就像 make 和类似的生成工具所做的那样。每个目标的定义依据的是在
它在能够执行之前必须完成的其他所有目标。这 是使用 target 元素的 depends 属性来实现的。例
如:
<target name="init"/>
<target name="preprocess" depends="init"/>
<target name="compile" depends="init,preprocess"/>
<target name="package" depends="compile"/>