摘 要:Ant是基于Java的項目生成工具,在軟件開發(fā)中用來將源代碼和其他輸入文件自動的轉(zhuǎn)換為可執(zhí)行文件的形式,以便及時產(chǎn)生一致的生成版本。Ant的目標是使Java項目的生成過程簡單化、標準化、規(guī)范化。本文介紹了Ant的基本功能、生成文件的配置和常用的任務操作,并通過列舉實例,分析了Ant的基要工作原理和使用方法。
關鍵詞:Ant;生成文件;target元素
中圖分類號:TP212.9;TN929.5
Ant(Another Neat Tool)是基于Java的生成工具,最初的創(chuàng)始人James Duncan Davidson,后來捐獻給了Apache開源組織,即為Apache Ant。
Ant生成工具作用,主要是在軟件開發(fā)過程中,可以將源代碼與其他輸入文件轉(zhuǎn)換為可執(zhí)行的文件的形式(也可以轉(zhuǎn)換為可安裝產(chǎn)品的映像形式)。隨著開發(fā)的應用程序的生成過程會變得更加復雜,為確保在每次生成期間使用精確相同的生成步驟,同時,使生成的過程盡可能的自動化,以便產(chǎn)生一致的生成版本,在軟件的開發(fā)流程中,這就變得非常的重要[1]。
Ant定義生成文件之間的相互依賴關系,并使用了跨平臺的Java類,使用Ant,可以編寫單個生成文件,該生成文件在任何Java平臺上都具有一致地操作(因為Ant本身是用Java語言實現(xiàn)的),這是Ant最大的優(yōu)勢。
1 Ant配置
解壓下載的文件包到指定的文件夾下,如:C:\apache-ant-1.9.1。
配置環(huán)境變量
(1)配置環(huán)境變量PATH,如:PATH設置為C:\apache-ant-1.9.1\bin。
(2)配置環(huán)境變量ANT_HOME,如:ANT_HOME設置為C:\apache-ant-1.9.1。
測試,在命令行中,輸入ant,可測試成功與否。
2 Ant的使用
2.1 Ant生成文件剖析
使用Ant必須構(gòu)建build.xml文件,build.xml文件基本結(jié)構(gòu)如圖1:
圖1 build.xml基本結(jié)構(gòu)
(1)Ant沒有定義自己的語法,其生成文件是以XML編寫的,在Ant存在一組Ant可以理解的預定義XML元素,且可以定義新的元素,來擴展Ant的功能。(2)Ant生成文件build.xml就由單個project元素組成,目標target元素是project元素的子元素,可以按照約束的步驟,完成具體的功能和任務,project元素可以包含多個目標target元素。(3)將所有操作劃分為邏輯生的成步驟,每一個步驟配置到單個target目標元素中,使操作更加的靈活,可以執(zhí)行整體操作,也可以執(zhí)行單獨一部分操作。(4)在根元素project中,如果在調(diào)用Ant時沒有指定要執(zhí)行的具體目標,則屬性default設置起始要執(zhí)行的目標target,然后在目標target中定義要執(zhí)行的任務[2]。
2.2 屬性
Ant中的屬性類似編程語言中的變量,它們都具有名稱和值。然而與通常的變量不同,一經(jīng)設置,Ant中的屬性就不可更改;它們不可變的,就像Java語言中的String對象。這起初看來似乎很有限制性,但這樣是為了遵循Ant的簡單原則:畢竟,它是一個生在工具,而不是一種編程語言。
(1)定義一個屬性,如:
注:定義的屬性及其他元素,沒有先后順序關系。
2.3 依賴關系
生成一項目需要很多步驟,且這些步驟需遵循一定的先后順序。例如生成一個JAVA項目,首先編譯源代碼,然后打包歸檔,而不能不經(jīng)編譯,直接打包歸檔。Ant采用比較靈活的方法來定義這種依賴關系,每個目標在它執(zhí)行之前,必須完成它所有依賴的目標。這是使用目標target元素的depends屬性實現(xiàn)的[3]。如圖2:
圖2 依賴關系
名為copy的target,功能是把hello1文件夾下的note.txt文件復制到hello2文件夾下,執(zhí)行該功能前,必須執(zhí)行名為init的target,即先創(chuàng)建hello1和hello2文件夾。
3 基本操作
3.1 編譯源代碼
通過Ant可以調(diào)用javac編譯器,編譯指定的源代碼文件,操作如下:
該標簽尋找src目錄中所有以.java為擴展名的文件,并對這些源文件調(diào)用javac編譯器,在code目錄中生成類文件。
3.2 創(chuàng)建JAR文件
通常對編譯后形成的結(jié)果類,再打包到一個JAR文件中。下面是在Ant中使用jar任務的一個例子:
該jar任務創(chuàng)建一個名為version.jar的JAR文件,并把class目錄中所有文件添加到該JAR文件中。
3.3 創(chuàng)建和刪除目錄
在Ant中,創(chuàng)建目錄任務名是mkdir。例如:
該任務的功能是在當前目錄下的project目錄下創(chuàng)建src目錄;若當前目錄下不存在project目錄,則在當前目錄下創(chuàng)建project目錄,再在project目錄下創(chuàng)建src目錄;若project和src目錄都存在,則不執(zhí)行任何操作。
在Ant中,刪除目錄任務名是delete。例如:
該任務將刪除指定目錄下連同它包含的所有文件及子目錄。若使用 file 屬性,而不是 dir 屬性,可以指定要刪除的單個文件。
3.4 復制和移動文件或目錄
在Ant中復制文件的任務名是copy,如:
移動文件move任務,與復制文件相似,如:
而復制或移動文件到目錄中,只需把tofile屬性改為todir屬性。如:
實現(xiàn)把src目錄下demo.java文件,復制到srccopy目錄下。
實現(xiàn)把src目錄下demo.java文件,移動到srccopy目錄下。
4 結(jié)束語
使用Ant的目標是使Java項目的生成過程簡單化、標準化、規(guī)范化,Ant通過大量的任務提供了很多的功能,每個任務又有許多選項,功能之間又有一定的邏輯關系,從而對Ant的使用增加了一定的得復雜度。本文主要介紹了Ant的基本概念和基本功能,對Ant自定義任務擴展等更深一步的技術,還需要進一步的探索和研究。
參考文獻:
[1]Malcolm Davis.Incremental development with Ant and JUnit.2000,11.
[2]Jim Creasman.Enhance Ant with XSL transformations.2003,9.
[3]鄭莉.Java語言程序設計[M].清華大學出版社,2011,6.
作者簡介:黃繼紅(1977-),男,安徽六安人,碩士,講師,主要研究方向:軟件工程。