转载自:http://hi.baidu.com/yuanzhifeng/blog/item/c009e2dedece3e5794ee37f9.html
一:project元素
project元素是Ant构件文件中的根元素,Ant构件文件至少应该包行一个project元素。
在project元素中可以定义多个target元素。当运行Ant工具时,可以选择执行project 元素下的
一个或多个target。如果没有具体指定要执行的target,则ant会执行project元素中定义的默认
的target。
在ant工具中,一个project元素包含4个属性:name,description、default和basedir。但对于project元素来
说,这4个元素都不是必须的,可以根据项目的需要进行选择。
<description>属性是关于project和target 的简短描述和相关说明。通过想project和target添加描述,
使用户能够更好地了解这个project和target要执行的功能,这同时也是个好习惯。
例如:
<?xml version="1.0" encoding="GB2312"?>
<project name="simleproject" default="targetA" basedir="." >
<description>
这是我的project例子
</description>
<target name="targetA" >
<description>
这是 targetA任务
</description>
<echo message="I am targetA" />
<echo message="Can see me?" />
<echo message="the basedir is${basedir}" />
<echo message="the src property's value is ${os.name} ${src}" />
</target>
<target name="targetB" >
<description>
这是 targetB任务
</description>
<echo message="I am targetB" />
<echo message="Can see me?" />
</target>
<property name="src" value="src" />
</project>
二 target元素
target元素是Ant工具的执行单元,每个target里包含一个或多个具体的操作(Ant工具的的任务)。
一个target可以依赖于其它的一个或多个target。例如,可能会有一个target用于编译程序,一个target用于
生成可执行文件(jar文件)。用户在生成可执行文件之前必须先执行编译通过,所以生成可执行文件的target
依赖于编译的target,在编译的target执行后才会执行。Ant提供了处理这种依赖关系的能力。target包含
name、depends、if、unless和description 5个基本属性。例如:
<?xml version="1.0" encoding='utf-8'?>
<project name="targetproject" default="D" >
<target name="A">
<echo message="I am A "/>
</target>
<target name="B" depends="A">
<echo message="I am B"/>
</target>
<target name="C" depends="B">
<echo message="I am C"/>
</target>
<target name="D" depends="C,B,A">
<echo message="I am D"/>
</target>
</project>
1,name属性
name属性即target元素的名称。每个target元素必须要有一个name属性。而且在同一个project元素中每个target
的名称都是唯一的,且不能重复。当要执行具体的target时,就通过名称指定。
2.depends属性
depends属性是可选属性,主要用于描述target间的依赖关系。depends中可以是一个或多个target元素名称,多个
target用","来分隔。同时,应当注意到Ant工具的depends属性指定了target元素间被执行的顺序关系。如果当前的
target元素无法运行,但这种depends关系对于这个target元素所依赖的其它target元素并没有影响。Ant会依照depends
属性中target出现的顺序(从左到右)依次执行每个target。有一点要记住的是,只要某个target元素依赖于一个target
元素,后者就会先被执行。例子如下:
3.if属性
在target元素中if属性也是可选的。主要用于验证在执行target前所必须设定的属性。如果if指定的属性没有设定,那么
这个target就不会被执行。只有当这个属性值被设定时这个target才会被执行。例如:要验证系统是否安装了JDK,若
安装了JDK就输出JDK的版本信息。构件文件如下:
<?xml version="1.0" encoding='utf-8'?>
<project name="simpleproject" default="checkJavaVersion" >
<!-- -->
<property name="abc" value="abc property"/>
<target name="checkJavaVersion" if="ant.java.version" depends="checkPorperty,checkPorperty2">
<echo message=" the java had been set,version is : ${ant.java.version}" />
</target>
<target name="checkPorperty" if="abc" >
<echo message=" the abc property had set detail is :${abc}" />
</target>
<target name="checkPorperty2" unless="abc" >
<echo message="if abc not set I will execute" />
</target>
</project>
4.unless属性
在target元素中unless属性也是可选的。unless属性的功能与if属性的功能正好相反。也就是说,
如果unless属性中没有被设定,那么这个target就不会被执行。当这个属性值被设定时,这个target才不会被执行。
提示:if和unless这对功能正好相反的属性,只能限制target元素的任务是否被执行,当时它们并不能限制这个
target依赖的target的执行。也就是说,如果<target name="targetA" depends="targetB" if="propertyA">,
同时propertyA没有被设定,当执行targetA时,虽然targetA不会被执行,但是targetB会正常执行。