Ant中的Datatype

1.
Datatype一般存储一些信息的集合,比如待编译的文件列表、待删除的目录集等,扮演了任务参数的角色,它们可以在一个任务内部声明,也可以在任务外部定义,并为它起个名字,然后再把这个名字传递给任务,这样就可以跨多个任务共享一个Datatype。

文件集(fileset)合路径(path),是比较常用的两种Datatype

文件集可以列出哪些文件需要编译、打包、复制、删除等。

<fileset id="source.fileset" dir="src" includes"**/*.java" />

引用方式
<copy todir="backup">
<fileset refid="source.fileset"/>
</copy>

2.ant特征
<property name="build.jar" value="build"/>
这个就是ant特征
${build.jar},如果定义,在构建时将被替换为特征的值,否则,保存原样。
注意:ant的特征值,是不能修改的,一旦第一次复制,后面就不可以修改它的值。

对于一些简单的属性值,可以用value设置,对于文件名和路径,用location属性设置更适合。

location属性可以把现对路径转换成绝对路径,把路径分隔符转换成目标平台相关的形式。

还可以加载外部的properties文件
<property file="build.properties"/>
加载属性文件时,都是以简单的value设置的,如果要用location再设置,可以这样:
<property name="ss" location="${key值}"/>
需要注意的是:配置文件中如果需要\,应该使用2个\\,这个应该记住。

3.路径path

它可以定义一个文件或目录
<path>
<pathelement location="lib/junit.jar"/>
</path>
或者用path定义2部分,可通过:或者;分隔:
<path>
<pathelement path="build/classes;lib/junit.jar"/>
</path>

如果path只包含一个元素,上面也可以简写成:
<path path="build/classes;lib/junit.jar"/>
<path location="lib/junit.jar"/>
path还可以包含一个文件集
<path>
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</path>

目录即可以用/分隔,也可以用\分隔,构建文件不必关系它在哪个操作系统上运行。


路径的引用
<path location="lib/junit.jar" id="junit.path"/>
<path refid="junit.path"/>
或者
<path id="">
<path refid="">
</path>

4.把2个目录的文件编译到一个目录下
<javac destdir="dest">

<src path="src1"/>
<src path="src2"/>
</javac>


5.文件集是以一个根目录为文件的集合,包含该根目录下,已经所有子目录下的文件
<copy todir="dest">
<fileset dir="web"/>
</copy>
默认会把web下面所有的文件都拷贝过去。

模式集的应用,它用于限制要操作文件集中的哪一类文件,例如:
<copy todir="bin">
<fileset dir="form" includes="**/*.gif"/>
</copy>
拷贝当前目录,及其子目录下的所有gif文件,**,这个表述匹配0个或多个目录。上面的例子也可以这样:
<fileset dir="form">
<include name="**/*.gif"/>
</fileset>

javac是众多隐式文件集中的一个,它本身包含了很多文件集的属性
<javac srcdir="src" destdir="dest">
<classpath refid="compile.classpath"/>
<include name="org/com/**/*.java"/>
<exclude name="org/com/*.java"/>
</javac>
classpath内嵌属性用于指定编译文件时依赖的类和文件
6.检查文件的可用性
<available property="cxm" classname="com.zte.Test"/>
如果找到Test类,cxm会被设置为true,否则保持未定义状态
<available property="cxm" file="./form/heartbseat.jsp" type="file"/>
测试文件是否存在,如果存在设置为true,否则保持为定义状态
<available property="cxm" file="./form" type="dir"/>
这是测试目录是否存在
<available property="cxm" resource="log4j.properties" />
这是测试资源文件是否存在

7.用condition测试条件
<condition property="os" value="windows" else="other">
<or>
<os family="win9x"/>
<os family="winnt"/>
</or>
</condition>


<target name="warzip">
<echo>${os}</echo>
</target>
如果操作系统是win9x或者是xinnt,就把value值赋值给os,否则把other赋值给os。

9
fail,如果条件为真,则停止构建,并打印错误消息。
<fail message="is sss">
<condition>
<not>
<socket port="8547" server="127.0.0.1"/>
</not>
</condition>
</fail>
<fail>标签放到target外面也可以执行。如果在target外面,则不管它在哪个地方,在执行构建时,首先执行它。
not标签是对条件取反,socket判断指定机子上的指定端口是否开发,如果没有开放则返回false,否则返回true.

10.<tstamp>创建时间戳
执行默认的时间戳
<tstamp/>
它既可以在target外执行,也可以在target内执行,执行后会自动设置三个属性DSTAMP(yyyymmdd)、TSTAMP(hhmmss)、TODAY(月份,日、年)
也可以指定格式:
<tstamp>
<format property="cxm" pattern="yyyy-MM-dd','HH:mm:ss"/>
</tstamp>
在后面引用cxm这个属性即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值