参考:http://www.blogjava.net/fingki/archive/2008/05/21/201919.html
1.<condition>任务在测试成功后才对特征进行设置,否则保留特征不设置。
大部分Ant测试可以根据<condition>任务进行分组,如过嵌套的条件测试为true,它将对一个已经命名的特征进行设置。使用逻辑运算符<and>,<or>, <xor>和<not>可以构成一个复杂的测试条件。例如
<?xml version="1.0"?>
<project name="testCondition" >
<target name="test">
<!--判断本机操作系统是不是windows,unix中之一,如果是,特征值设置为success-->
<condition property="os" value="success" else="fail"><!--已经命名特征os-->
<or><!--嵌套条件-->
<os family="unix" />
<os family="windows" />
</or>
</condition>
<echo>sconditon=${os}</echo>
</target>
</project>
a)条件是否为true,决定了特征是否存在。Ant规定条件为true,特征会赋值为true。条件不成立,特征不存在。
<project name="testCondition">
<target name="test">
<!--如果条件为true,则设置特征值为true。否则特征不存在(而不是说不给scondtion赋值)-->
<condition property="scondition">
<istrue value="true"/><!--条件-->
</condition>
<antcall target="isTrue"></antcall>
</target>
<target name="isTrue" if="scondition"><!--只要名为scondition的特征存在,那就执行isTrue-->
<echo>is ture</echo>
</target>
</project>
b)由于特征scondtion根本不存在,所以不会执行目标test。而不是根据特征的值来决定目标是不是被执行。
<?xml version="1.0"?>
<project name="testCondition">
<target name="test" if="scondition">
<echo message="scondition1=${scondition}" />
<echo>is ture</echo>
</target>
</project>
但是如果我们在命令行中设置了特征scondition(ant -Dscondition=false test),那么目标test就会被ant执行
2.测试127.0.0.1这台机器上的8080端口是否被应用程序占用。如果没被占用,输出错误提示信息。
<?xml version="1.0"?>
<project name="testCondition" >
<target name="test">
<property name="server.port" value="8080" />
<fail message="no server at ${server.port}" >
<condition>
<not>
<socket port="${server.port}" server="127.0.0.1" />
</not>
</condition>
</fail>
</target>
</project>
3.按照ant手册,任务 <tstamp/>的作用就是Sets the DSTAMP, TSTAMP, and TODAY properties in the current project, based on the current date and time.然后,在build file的其他地方使用DSTAMP,TSTAMP,TODAY三个属性.当然,如果在build file的其他地方不使用DSTAMP,TSTAMP,TODAY这三个属性.那么<tstamp/>其实就相当于没有用了 。样例:
<project name="portal" basedir=".">
<property name="lib.dir" value="lib" />
<tstamp/>
<target name="init">
<echo message="${TODAY}" />
<echo message="${DSTAMP}" />
<echo message="${TSTAMP}" />
</target>
</project>
将以上代码保存为:build.xml文件后执行,可以得到一下结果
也就是说:在你的Ant脚本中定义了<tstamp/>对象后,它便为我们定义了三个属性变量:DSTAMP,TSTAMP,TODAY
<tstamp/>任务允许任何数量的嵌套<format>元素,它们以给定的格式规范来定义特征。例如:你也可以像这样:
<?xml version="1.0" ?><project name="portal" >
<target name="init">
<tstamp>
<format property="TODAY" pattern="yyyy-MM-dd" locale="cn" />
<format property="NOW" pattern="yyyy-MM-dd HH:mm:ss" locale="cn" />
</tstamp>
<echo message="now=${NOW}, TODAY=${TODAY}"/>
</target>
</project>
自己设定日期和时间的格式,以便你在Ant脚本文件中随时使用这些时间属性