一.Ant簡介: Ant----Another Neat Tool,是一個基于Java的跨平臺構(gòu)建工具,作為一個優(yōu)秀的構(gòu)建工具Ant有如下的優(yōu)點: Ø 語法簡單,便于學(xué)習,如果你使用過XMl,就會更加感覺到這一點; Ø 易于使用,可以減少基于Make方法的大型軟件項目中編寫makefile的人數(shù); Ø 跨平臺,以一種靈巧的方式管理Java的classpath和文件的目錄結(jié)構(gòu); Ø 運行速度快,所有的Java都可以在Ant的JVM中啟動; Ø 與Junit測試框架緊密集成以實現(xiàn)極限編程的單元測試; Ø 使用Java語言可以很容易的對他進行擴展; Ø 內(nèi)置對J2EE的開發(fā)的支持,如EJB的編譯和打包等; Ø 致力于解決Java項目的部署問題:如FTP,Telnet,應(yīng)用服務(wù)器,SQL命令等,這些都可以自動部署.
Ant的官方網(wǎng)站: http://ant./ Ant的最新版本:Ant 1.6.5 本文所有的例子運行的環(huán)境:JDK1.4.2,Ant1.6.2,eclipse3.0
二.介紹Ant的DATATYPE和特性 Ant的核心任務(wù)就是target,一個Ant文件有多個target組成,而這些target之間,又有相互的依賴關(guān)系--depends,運行的時候默認運行project中指定的target.在構(gòu)建一個典型的Java工程時,多數(shù)的步驟用于處理文件和路徑(如classpath),Ant提供的datatype可以很自然的處理這兩個概念.文件集和路徑以及其他的幾種類型的datatype,構(gòu)成了Ant的構(gòu)建文件的基本結(jié)構(gòu).
1.路徑(Path) 在javac中我們經(jīng)常使用的就是classpath,一個路徑定義的例子如下: <classpath> <pathelement location =”lib/some.jar”/> </classpath> location允許你指定單個的文件或者目錄,也可以通過另一個路徑萊擴展當前的路徑,使用path來代替location: <classpath> <pathelement path =”build/classes;lib/some.jar”/> </classpath> 路徑定義中元素間的分隔符可以使用分號,冒號,路徑分隔符可以使用斜杠,反斜杠,不需要考慮操作系統(tǒng)的差異.
2.文件集(Fileset) 所有的構(gòu)建過程都會隱式的對一系列文件進行操作,Ant將文件集看成一種本地的datatype,下面看一個例子,這個例子是將文件從一個目錄copy到另一個目錄中: <copy todir=”new_web”> <fileset dir=”web”/> </copy> 在構(gòu)建過程中我們通常需要包含或者排除一些文件,下面是一些典型的文件集示例: <fileset> <include name="**/*Test.java"/> </fileset> <fileset> <exclude name="**/*.jsp"/> </fileset> 默認情況下,include和exclude中的值是大小寫敏感的,可以通過設(shè)置casesensitive=”false”,來取消它. 還有在許多情況下,IDE和代碼管理系統(tǒng)會生成許多的臨時文件,我們不得已要在每個文件集中去設(shè)置排除子句,為了避免這種情況,Ant針對這些特殊的模式的排除模式在默認情況下是激活的(例如:**/CVS,**/#*#等),詳細模式可以查找相關(guān)的文檔!.
3.模式集(Patternset) 在文件集中使用Ant的另一個核心datatype:模式集,來實現(xiàn)包含和排除功能.模式匹配功能如下: l * 指代從零到任意長的字符. l ? 指代單一字符. l ** 作為目錄名,代表目錄樹上從當前節(jié)電往下的所有目錄,可以是零到任意多個目錄. l 以/ 或 \結(jié)尾的模式意味著結(jié)尾是**.
4.選擇器(Selector) Ant1.5以上的版本包含了一個精密的新特性,選擇器,他用來選擇包含在文件集中的文件.介紹幾種常用的內(nèi)建選擇器: <filename>:基于模式匹配文件,工作方式類似與模式集的include或exclude元素 <size>:以小于,大于,等于該指定值為條件來選擇文件. <date>:以最后修改時間早于,遲于或等于指定值來選擇文件. <present>:選擇存在于其他目錄樹的文件. <contains>選擇包含指定字符串的文件. 這些選擇器都可以被合并到選擇器容器中以提供分組和邏輯表達,這些容器就是<and>,<or>,<not>,<none>和<majority> 比較兩個目錄,并將只在一個目錄下存在的文件復(fù)制到另一個目錄下,我們來結(jié)合使用<not>和<present> <copy todir="newfiles"> <fileset dir="web"> <not> <present targetdir="currebtfiles"/> </not> </fileset> </copy> 使用<contains>選擇器,我們可以選擇只包含特定字符串的文件: <copy todir="newfiles"> <fileset dir="web"> <contains text="System"/> </fileset> </copy>.
這里簡單提一下Ant的一個特性:Property,它與java.util.Property在概念上非常相似,它允許在構(gòu)建文件中自定義特性,并且允許將環(huán)境變量作為特性. Property具有特殊的權(quán)限,他可以在<target>之外執(zhí)行,具體的用法,在下面將結(jié)合例子說明.
以上介紹了幾種Ant的常用datatype,Ant還包括很多的datatype,例如過濾集(Filterset),過濾鏈(filterchain),過濾閱讀器(FilterReader),Mapper映射器,ZipFileset等等,可以通過相關(guān)資料來了解! |
|