Ant構(gòu)建文件是XML文件。每個(gè)構(gòu)建文件定義一個(gè)唯一的項(xiàng)目(Project元素)。每個(gè)項(xiàng)目下可以定義很多目標(biāo)(target元素),這些目標(biāo)之間可以有依賴(lài)關(guān)系。當(dāng)執(zhí)行這類(lèi)目標(biāo)時(shí),需要執(zhí)行他們所依賴(lài)的目標(biāo)。每個(gè)目標(biāo)中可以定義多個(gè)任務(wù),目標(biāo)中還定義了所要執(zhí)行的任務(wù)序列。Ant在構(gòu)建目標(biāo)時(shí)必須調(diào)用所定義的任務(wù)。任務(wù)定義了Ant實(shí)際執(zhí)行的命令。
Ant中的任務(wù)可以為3類(lèi)。
(1) 核心任務(wù)。核心任務(wù)是Ant自帶的任務(wù)。
(2) 可選任務(wù)。可選任務(wù)實(shí)來(lái)自第三方的任務(wù),因此需要一個(gè)附加的JAR文件。
(3) 用戶(hù)自定義的任務(wù)。用戶(hù)自定義的任務(wù)實(shí)用戶(hù)自己開(kāi)發(fā)的任務(wù)。
文件標(biāo)簽
<project>標(biāo)簽
每個(gè)構(gòu)建文件對(duì)應(yīng)一個(gè)項(xiàng)目。<project>標(biāo)簽是構(gòu)建文件的根標(biāo)簽。它可以有多個(gè)內(nèi)在屬性,各個(gè)屬性的含義分別如下。
- default表示默認(rèn)的運(yùn)行目標(biāo),這個(gè)屬性是必須的。
- basedir表示項(xiàng)目的基準(zhǔn)目錄。
- name表示項(xiàng)目名。
- description表示項(xiàng)目的描述。
每個(gè)構(gòu)建文件都對(duì)應(yīng)于一個(gè)項(xiàng)目,但是大型項(xiàng)目經(jīng)常包含大量的子項(xiàng)目,每一個(gè)子項(xiàng)目都可以有自己的構(gòu)建文件。
<target>標(biāo)簽
一個(gè)項(xiàng)目標(biāo)簽下可以有一個(gè)或多個(gè)target標(biāo)簽。一個(gè)target標(biāo)簽可以依賴(lài)其他的target標(biāo)簽。例如,有一個(gè)target用于編譯程序,另一個(gè)target用于生成可執(zhí)行文件。在生成可執(zhí)行文件之前必須先編譯該文件,因此可執(zhí)行文件的target依賴(lài)于編譯程序的target。Target的所有屬性如下。
(1) name表示標(biāo)明,這個(gè)屬性是必須的。
(2) depends表示依賴(lài)的目標(biāo)。
(3) if表示僅當(dāng)屬性設(shè)置時(shí)才執(zhí)行。
(4) unless表示當(dāng)屬性沒(méi)有設(shè)置時(shí)才執(zhí)行。
(5) description表示項(xiàng)目的描述。
Ant的depends屬性指定了target的執(zhí)行順序。Ant會(huì)依照depends屬性中target出現(xiàn)順序依次執(zhí)行每個(gè)target。在執(zhí)行之前,首先需要執(zhí)行它所依賴(lài)的target。程序中的名為run的target的depends屬性compile,而名為compile的target的depends屬性是prepare,所以這幾個(gè)target執(zhí)行的順序是prepare->compile->run。一個(gè)target只能被執(zhí)行一次,即使有多個(gè)target依賴(lài)于它。如果沒(méi)有if或unless屬性,target總會(huì)被執(zhí)行。
<mkdir>標(biāo)簽
該標(biāo)簽用于創(chuàng)建一個(gè)目錄,它有一個(gè)屬性dir用來(lái)指定所創(chuàng)建的目錄名,其代碼如下:<mkdir dir=”${class.root}”/>通過(guò)以上代碼就創(chuàng)建了一個(gè)目錄,這個(gè)目錄已經(jīng)被前面的property標(biāo)簽所指定。
<jar>標(biāo)簽
該標(biāo)簽用來(lái)生成一個(gè)JAR文件,其屬性如下。
(1) destfile表示JAR文件名。
(2) basedir表示被歸檔的文件名。
(3) includes表示別歸檔的文件模式。
(4) exchudes表示被排除的文件模式。
<javac>標(biāo)簽
該標(biāo)簽用于編譯一個(gè)或一組java文件,其屬性如下:
(1).srcdir表示源程序的目錄。
(2).destdir表示class文件的輸出目錄。
(3).include表示被編譯的文件的模式。
(4).excludes表示被排除的文件的模式。
(5).classpath表示所使用的類(lèi)路徑。
(6).debug表示包含的調(diào)試信息。
(7).optimize表示是否使用優(yōu)化。
(8).verbose 表示提供詳細(xì)的輸出信息。
(9).fileonerror表示當(dāng)碰到錯(cuò)誤就自動(dòng)停止。
<java>標(biāo)簽
該標(biāo)簽用來(lái)執(zhí)行編譯生成的.class文件,其屬性如下。
(1).classname 表示將執(zhí)行的類(lèi)名。
(2).jar表示包含該類(lèi)的JAR文件名。
(3).classpath所表示用到的類(lèi)路徑。
(4).fork表示在一個(gè)新的虛擬機(jī)中運(yùn)行該類(lèi)。
(5).failonerror表示當(dāng)出現(xiàn)錯(cuò)誤時(shí)自動(dòng)停止。
(6).output 表示輸出文件。
(7).append表示追加或者覆蓋默認(rèn)文件。
<delete>標(biāo)簽
該標(biāo)簽用于刪除一個(gè)文件或一組文件,去屬性如下:
(1).file表示要?jiǎng)h除的文件。
(2).dir表示要?jiǎng)h除的目錄。
(3).includeEmptyDirs 表示指定是否要?jiǎng)h除空目錄,默認(rèn)值是刪除。
(4).failonerror 表示指定當(dāng)碰到錯(cuò)誤是否停止,默認(rèn)值是自動(dòng)停止。
(5).verbose表示指定是否列出所刪除的文件,默認(rèn)值為不列出。
<copy>標(biāo)簽
該標(biāo)簽用于文件或文件集的拷貝,其屬性如下。
(1).file 表示源文件。
(2).tofile 表示目標(biāo)文件。
(3).todir 表示目標(biāo)目錄。
(4).overwrite 表示指定是否覆蓋目標(biāo)文件,默認(rèn)值是不覆蓋。
(5).includeEmptyDirs 表示制定是否拷貝空目錄,默認(rèn)值為拷貝。
(6).failonerror 表示指定如目標(biāo)沒(méi)有發(fā)現(xiàn)是否自動(dòng)停止,默認(rèn)值是停止。
(7).verbose 表示制定是否顯示詳細(xì)信息,默認(rèn)值不顯示。