5.3.3 项目
一个构建文件必须具备的文档元素是
标签,它必须指定一个默认目标,还可以指定一个名字(可选的)。此外,还可以标明项目的基本目录。表5.1中列出了它的属性:
表5.1
标签属性
属性 | 描述 | 是否必需 |
default | 要运行的默认目标 | 是 |
name | 项目名称 | 否 |
basedir | 基本目录 | 否 |
description | 项目描述 | 否 |
在basedir属性中,你既可以指定相对路径也可以指定绝对路径;不管哪种情况,这都将被解析为其他标签可以使用的绝对路径。然而使用一个相对路径会较好,因为这样能让构建更具可移植性。在进行一次构建时,其它开发者的机器以及正式构建用机不需要设置得和你的一样。以下示例将basedir属性设置为当前路径(.)--也就是说,定位到build.xml所在的目录:
标签可以有以下嵌套元素:
- --如果你需要将描述扩展到超过一行,你可以用嵌套元素来包含项目描述,而非用一个属性。强烈推荐写上描述。
- --如5.3.4节所述。
-
--如5.3.6节所述。
5.3.4 目标
一个目标(target)就是一个任务或是一组相关任务的容器标签,可以(粗略地)比喻为一个方法(method)。它可具有如表5.2所列属性:
表5.2 标签属性
属性 | 描述 | 是否必需 |
name | 目标名称 | 是 |
depends | 依赖关系列表 | 否 |
if | 仅当设置了指定属性时执行 | 否 |
unless | 仅当未设置指定属性时执行 | 否 |
description | 目标描述 | 否 |
为你的主要目标给出一份描述是个好主意,因为Ant提供了一个-projecthelp选项来列出所有具有描述的目标,并把它们作为主要目标。这个选项令你的构建文档在一定程度上可以进行自我文档编制。
这里是一个例子:
5.3.5 任务
如果把一个目标比喻为一个方法,一个任务(task)可以比喻为方法中的一条语句。Ant提供了大量的任务--超过100条,如果你把核心任务和可选任务都算上。
Ant的巨大优点之一是它对跨平台问题是透明处理的。例如,在UNIX中,一个文件路径在目录和文件间用的是向前的斜线(/),而在Windows中,用的是一个反斜线(\)。在Ant中,你都可以使用,然后Ant会提供对你正在使用的系统来说正确的格式。对于类路径来说也是一样的。在UNIX中,一个类路径中不同的路径是用一个冒号分隔的,而在Windows中使用的则是一个分号;你两个都可以用,剩下的事情就交给Ant了。
以下是一些常见的人物,它们都有一组基本属性--足以理解示例并开始编写你自己的构建文件。需要一份所有任务及其选项的完整描述的话,请参考http://ant.apache.org/manual/index.html上的Ant文档。
该任务从一个文件中读取构建号(build number),将属性build.number设置为该号码,然后将build.number的值+1后写回文件。它只有一个属性,如表5.3中所列:
表5.3 任务属性
属性 | 描述 | 是否必需 |
file | 要读取的文件(默认:build.number) | 否 |
这里是一个例子:
该任务复制一个或一组文件。要拷贝单个的文件,用file属性即可。要拷贝多个文件,需要用一个嵌套的元素。
通常,该任务仅当目标文件不存在或比源文件旧时才执行复制,但你可以通过设置override属性为true来改变默认行为。任务的属性如表5.4中所列:
表5.4 任务属性
属性 | 描述 | 是否必需 |
file | 源文件名 | 是,除非使用了 |
tofile | 目标文件名 | 是,除非使用了todir |
todir | 目标目录 | 是,如果拷贝一个以上的文件 |
overwrite | 覆盖更新的目标文件 | 否;默认是false |
includeEmptyDirs</ |