Ant之Task
2015-12-10 23:41
337 查看
每个Task都是一系列的可执行的代码。
一个Task可以包含大量的属性,属性值也可以引用Property,这些引用都会在执行之前由Ant完成解析。
下面列出一些Ant自带的一些常用的Task。
从Ant1.7.1开始,Concat任务就可以作为一个Resource Collection来使用,他会返回一个精确的Resource。Resource Collection是用于选择哪一个资源被链接。没有单一的属性指定一个单一的资源。
concat的参数有如下几个:
(1)Desfile:目的文件用于链接流。如果不指定,将会使用控制台来代替。
(2)Append:指定输入到“desfile”指定的文件的内容是否拼接在原文件内容后面,默认为no,如果改为Yes,那么源文Force:过时了,不说。
(3)Encoding:文本编码格式。
(4)指定“desfile”所指定的文件不存且resource为空的话该“desfile”文件是否可以被创建。
(5)Resourcename:指定导出的文件名。
下面说说Concat其具体的使用方法:
以下如无特殊说明,所有的文件操作均在F:\Ant目录下进行。
<project default="init" basedir="F:Ant">
<target name="init">
<echo>Main Target init...</echo>
</target>
<target name="cmd_filetoconsult">
<concat>
<!-- dir是指定目录,includes相当于一个过滤器,两个*之间是要过滤的目录或文件的名字。如果过滤到就会输出到控制台,如 如果没有匹配到就不会输出到控制台,*相当于SQL语句中的like字句,模糊匹配
dir="."表示在当前的根目录,也就是在project中指定的basedir目录,此处就是F盘的Ant目录 -->
<fileset dir="." includes="*concat*" />
</concat>
</target>
</project>使用此语句会将制定的目录也就是dir所指定的目录中的所有文件的内容都输出到控制台(当然如果有includes匹配另外说了),如果目录中还有目录,Ant会自动去遍历的。以上文件执行结果如下:
<concat destfile="dext.txt" append="true">
<filelist dir="concat" files="hello.txt" />
</concat>
</target>
上面的Target的意思就是将F盘下的Ant/concat目录下的hello.txt文件写入到Ant目录的dext.txt文件,如果dext.txt文件不存在就创建一个。
condition参数说明如下:
(1)property:属性(property)的名字,这个是在Ant脚本中任务所引用的名称。
(2)value:当条件成立的时候属性的值。
(3)else:当条件不成立的时候属性的值。
condition使用方法如下:
当condition执行完以后就开始执行concat任务了,这个任务就是上面讲过的,将hello.txt文件内容写到控制台,不过呢,该文件所在的目录是引用了一个叫p_name的属性的值,没错,该值就是Ant在运行时执行condition任务时生成的,这里他的值应该是concat,因此,这个文件的执行结果就是将concat目录下的hello.txt内容读取输出到控制台,如果condition中的equals中两个参数不相等那么就是将concat_a目录下的hello.txt文件内容输出到控制台。
实际上,在condition中的嵌套元素远远不止一个equals可以使用具体还包括如:not、and、or、available、os、issert、checksu、http...等等。具体的可以参考相应的文档,文档都在下载的ant压缩包里。
copy拥有如下参数:
(1)file:要拷贝的文件/目录。
(2)tofile:拷贝后的文件。
(3)todir:拷贝到指定目录。
其他参数就不再详说了,看文档就会一目了然了~
用法如下:
(3)拷贝目录到目录
一个Task可以包含大量的属性,属性值也可以引用Property,这些引用都会在执行之前由Ant完成解析。
下面列出一些Ant自带的一些常用的Task。
一、Concat
此任务是用来连接一个或多个资源到一个文件或者到控制台输出。如果目标文件不存在就会创建一个文件,除非资源列表时空的并且ignoreempty属性的值为true。从Ant1.7.1开始,Concat任务就可以作为一个Resource Collection来使用,他会返回一个精确的Resource。Resource Collection是用于选择哪一个资源被链接。没有单一的属性指定一个单一的资源。
concat的参数有如下几个:
(1)Desfile:目的文件用于链接流。如果不指定,将会使用控制台来代替。
(2)Append:指定输入到“desfile”指定的文件的内容是否拼接在原文件内容后面,默认为no,如果改为Yes,那么源文Force:过时了,不说。
(3)Encoding:文本编码格式。
(4)指定“desfile”所指定的文件不存且resource为空的话该“desfile”文件是否可以被创建。
(5)Resourcename:指定导出的文件名。
下面说说Concat其具体的使用方法:
以下如无特殊说明,所有的文件操作均在F:\Ant目录下进行。
(1)将文本写入指定文件
<?xml version="1.0" encoding="UTF-8"?> <project default="main" basedir="F:\" name="第一个Project"> <property name="dist" value="." /> <target name="main"> <echo>主Target执行...</echo> </target> <!-- --> <target name="cmd_concat"> <concat destfile="readme.txt" append="true">Hello,Ant World. </concat> </target> </project>执行之后就会在F盘下生成一个readme.txt文件,里面的内容就是Hello、Ant World。
(2)将一系列的文本内容输出到控制台
<?xml version="1.0" encoding="UTF-8"?><project default="init" basedir="F:Ant">
<target name="init">
<echo>Main Target init...</echo>
</target>
<target name="cmd_filetoconsult">
<concat>
<!-- dir是指定目录,includes相当于一个过滤器,两个*之间是要过滤的目录或文件的名字。如果过滤到就会输出到控制台,如 如果没有匹配到就不会输出到控制台,*相当于SQL语句中的like字句,模糊匹配
dir="."表示在当前的根目录,也就是在project中指定的basedir目录,此处就是F盘的Ant目录 -->
<fileset dir="." includes="*concat*" />
</concat>
</target>
</project>使用此语句会将制定的目录也就是dir所指定的目录中的所有文件的内容都输出到控制台(当然如果有includes匹配另外说了),如果目录中还有目录,Ant会自动去遍历的。以上文件执行结果如下:
(3)将一个文件的内容写入到另一个文件
<target name="cmd_appendfile"><concat destfile="dext.txt" append="true">
<filelist dir="concat" files="hello.txt" />
</concat>
</target>
上面的Target的意思就是将F盘下的Ant/concat目录下的hello.txt文件写入到Ant目录的dext.txt文件,如果dext.txt文件不存在就创建一个。
二、Condition
condition任务用于在Ant运行时判断并设置Property,即我们可以事先不用申明定义变量就在代码中使用,到运行时再去判断并定义!condition参数说明如下:
(1)property:属性(property)的名字,这个是在Ant脚本中任务所引用的名称。
(2)value:当条件成立的时候属性的值。
(3)else:当条件不成立的时候属性的值。
condition使用方法如下:
<?xml version="1.0" encoding="UTF-8"?> <project default="init" basedir="F:Ant"> <target name="init"> <echo>Main Target init...</echo> </target> <target name="cmd_condition"> <condition property="p_name" value="concat" else="concat_a"> <equals arg1="aa" arg2="aa"> </equals> </condition> <concat> <filelist dir="${p_name}" files="hello.txt" /> </concat> </target> </project>当我们执行ant cmd_condition目标时,会首先执行condition任务,他会判断equals的arg1参数和arg2参数两个值是否相等,如果相等那么就生成一个p_name的全局属性其值为concat,如果不相等那么p_name的值就是concat_a(在这里,表示的是两个目录的名字,都在我的F:\ant下),因为我给的两个参数的值都是aa相等所以p_name值应该是concat。
当condition执行完以后就开始执行concat任务了,这个任务就是上面讲过的,将hello.txt文件内容写到控制台,不过呢,该文件所在的目录是引用了一个叫p_name的属性的值,没错,该值就是Ant在运行时执行condition任务时生成的,这里他的值应该是concat,因此,这个文件的执行结果就是将concat目录下的hello.txt内容读取输出到控制台,如果condition中的equals中两个参数不相等那么就是将concat_a目录下的hello.txt文件内容输出到控制台。
实际上,在condition中的嵌套元素远远不止一个equals可以使用具体还包括如:not、and、or、available、os、issert、checksu、http...等等。具体的可以参考相应的文档,文档都在下载的ant压缩包里。
三、Copy
此任务用于拷贝目录、文件到指定位置。copy拥有如下参数:
(1)file:要拷贝的文件/目录。
(2)tofile:拷贝后的文件。
(3)todir:拷贝到指定目录。
其他参数就不再详说了,看文档就会一目了然了~
用法如下:
(1)拷贝文件到另一个文件
<target name="cmd_copy"> <copy file="hello.txt" tofile="aaa"></copy> </target>(2)拷贝文件到一个目录
<target name="cmd_copy"> <copy file="aaa" todir="concat"></copy> </target>
(3)拷贝目录到目录
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统