您的位置:首页 > 编程语言 > Java开发

Ant之Task

2015-12-10 23:41 337 查看
      每个Task都是一系列的可执行的代码。

      一个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)拷贝目录到目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ant java