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