每個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其具體的使用方法:
(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參數說明如下:
<?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。三、Copy
(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>