如果(或如果不)某些属性被设定才执行某个target这样允许根据系统的状态(java version OS 命令行属性定义等等)来更好地控制build的过程要想让一个target这样做你就应该在target元素中加入if(或unless)属性带上target因该有所判断的属性例如
<target name=
build
module
A
if=
module
A
present
/>
<target name=buildownfakemoduleA unless=moduleApresent/>
如果没有if或unless属性target总会被执行
可选的description属性可用来提供关于target的一行描述这些描述可由projecthelp命令行选项输出
将你的tstamp task在一个所谓的初始化target是很好的做法其他的target依赖这个初始化target要确保初始化target是出现在其他target依赖表中的第一个target在本手册中大多数的初始化target的名字是init
target有下面的属性
Attribute Description Required
name target的名字 Yes
depends 用逗号分隔的target的名字列表也就是依赖表 No
if 执行target所需要设定的属性名 No
unless 执行target需要清除设定的属性名 No
description 关于target功能的简短描述 No
Tasks
一个task是一段可执行的代码
一个task可以有多个属性(如果你愿意的话可以将其称之为变量)属性只可能包含对property的引用这些引用会在task执行前被解析
下面是Task的一般构造形式
<name attribute=value attribute=value />
这里name是task的名字attributeN是属性名valueN是属性值
有一套内置的(builtin)task以及一些可选task但你也可以编写自己的task
所有的task都有一个task名字属性Ant用属性值来产生日志信息
可以给task赋一个id属性
<taskname id=
taskID
/>
这里taskname是task的名字而taskID是这个task的唯一标识符通过这个标识符你可以在脚本中引用相应的task例如在脚本中你可以这样
<script
>
tasksetFoo(bar);
</script>
设定某个task实例的foo属性在另一个task中(用java编写)你可以利用下面的语句存取相应的实例
[] [] [] [] [] []