Ant之build.xml詳解_第1頁(yè)
Ant之build.xml詳解_第2頁(yè)
Ant之build.xml詳解_第3頁(yè)
Ant之build.xml詳解_第4頁(yè)
Ant之build.xml詳解_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、ant 之 build.xml詳解ant 之 build.xml 詳解關(guān)鍵字 : ant build.xml ant 的概念可能有些讀者并不連接什么是ant 以及入可使用它, 但只要使用通過linux 系統(tǒng)得讀者, 應(yīng)該知道 make 這個(gè)命令。當(dāng)編譯linux 內(nèi)核及一些軟件的源程序時(shí),經(jīng)常要用這個(gè)命令。make 命令其實(shí)就是一個(gè)項(xiàng)目管理工具,而ant 所實(shí)現(xiàn)功能與此類似。像make ,gnumake和 nmake 這些編譯工具都有一定的缺陷,但是ant 卻克服了這些工具的缺陷。最初ant 開發(fā)者在開發(fā)跨平臺(tái)的應(yīng)用時(shí),用樣也是基于這些缺陷對(duì)ant 做了更好的設(shè)計(jì)。ant 與 makefile

2、makefile 有一些不足之處,比如很多人都會(huì)碰到的煩人的tab 問題。最初的ant 開發(fā)者多次強(qiáng)調(diào) ” 只是我在tab 前面加了一個(gè)空格,所以我的命令就不能執(zhí)行” 。有一些工具在一定程度上解決了這個(gè)問題,但還是有很多其他的問題。ant 則與一般基于命令的工具有所不同,它是 java 類的擴(kuò)展。 ant 運(yùn)行需要的xml 格式的文件不是shell 命令文件。它是由一個(gè)project 組成的,而一個(gè)project 又可分成可多target ,target 再細(xì)分又分成很多task ,每一個(gè) task 都是通過一個(gè)實(shí)現(xiàn)特定接口的java 類來完成的。ant 的優(yōu)點(diǎn)ant 是 apache 軟件基

3、金會(huì)jakarta目錄中的一個(gè)子項(xiàng)目,它有以下的優(yōu)點(diǎn)。跨平臺(tái)性。ant 是存 java 語言編寫的,所示具有很好的跨平臺(tái)性。操作簡(jiǎn)單。ant 是由一個(gè)內(nèi)置任務(wù)和可選任務(wù)組成的。ant 運(yùn)行時(shí)需要一個(gè)xml 文件 (構(gòu)建文件 )。ant 通過調(diào)用target 樹,就可以執(zhí)行各種task 。 每個(gè) task 實(shí)現(xiàn)了特定接口對(duì)象。 由于 ant 構(gòu)建文件時(shí)xml 格式的文件,所以和容易維護(hù)和書寫,而且結(jié)構(gòu)很清晰。ant 可以集成到開發(fā)環(huán)境中。由于ant 的跨平臺(tái)性和操作簡(jiǎn)單的特點(diǎn),它很容易集成到一些開發(fā)環(huán)境中去。ant 開發(fā) ant 的構(gòu)建文件當(dāng)開始一個(gè)新的項(xiàng)目時(shí),首先應(yīng)該編寫ant 構(gòu)建文件。構(gòu)建

4、文件定義了構(gòu)建過程,并被團(tuán)隊(duì)開發(fā)中每個(gè)人使用。ant 構(gòu)建文件默認(rèn)命名為build.xml ,也可以取其他的名字。只不過在運(yùn)行的時(shí)候把這個(gè)命名當(dāng)作參數(shù)傳給ant。構(gòu)建文件可以放在任何的位置。 一般做法是放在項(xiàng)目頂層目錄中,這樣可以保持項(xiàng)目的簡(jiǎn)潔和清晰。下面是一個(gè)典型的項(xiàng)目層次結(jié)構(gòu)。(1) src 存放文件。(2) class 存放編譯后的文件。(3) lib 存放第三方j(luò)ar 包。(4) dist 存放打包,發(fā)布以后的代碼。ant 構(gòu)建文件是xml 文件。每個(gè)構(gòu)建文件定義一個(gè)唯一的項(xiàng)目(project 元素 )。每個(gè)項(xiàng)目下可以定義很多目標(biāo)(target 元素 ),這些目標(biāo)之間可以有依賴關(guān)系。當(dāng)

5、執(zhí)行這類目標(biāo)時(shí),需要執(zhí)行他們所依賴的目標(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 類。(1) 核心任務(wù)。核心任務(wù)是ant 自帶的任務(wù)。(2) 可選任務(wù)??蛇x任務(wù)實(shí)來自第三方的任務(wù),因此需要一個(gè)附加的jar 文件。(3) 用戶自定義的任務(wù)。用戶自定義的任務(wù)實(shí)用戶自己開發(fā)的任務(wù)。1.標(biāo)簽每個(gè)構(gòu)建文件對(duì)應(yīng)一個(gè)項(xiàng)目。 標(biāo)簽時(shí)構(gòu)建文件的根標(biāo)簽。它可以有多個(gè)內(nèi)在屬性,就如代碼中所示,其各個(gè)屬性的含義分別如下。(1) default表示默認(rèn)的運(yùn)行目標(biāo),這個(gè)屬性是必須的。(2) bas

6、edir表示項(xiàng)目的基準(zhǔn)目錄。(3) name 表示項(xiàng)目名。(4) description表示項(xiàng)目的描述。每個(gè)構(gòu)建文件都對(duì)應(yīng)于一個(gè)項(xiàng)目,但是大型項(xiàng)目經(jīng)常包含大量的子項(xiàng)目,每一個(gè)子項(xiàng)目都可以有自己的構(gòu)建文件。2.標(biāo)簽一個(gè)項(xiàng)目標(biāo)簽下可以有一個(gè)或多個(gè)target 標(biāo)簽。一個(gè)target 標(biāo)簽可以依賴其他的target 標(biāo)簽。例如,有一個(gè)target 用于編譯程序,另一個(gè)target 用于聲稱可執(zhí)行文件。在生成可執(zhí)行文件之前必須先編譯該文件,因策可執(zhí)行文件的target 依賴于編譯程序的target 。target的所有屬性如下。(1) name 表示標(biāo)明,這個(gè)屬性是必須的。(2) depends表示依

7、賴的目標(biāo)。(3) if 表示僅當(dāng)屬性設(shè)置時(shí)才執(zhí)行。(4) unless表示當(dāng)屬性沒有設(shè)置時(shí)才執(zhí)行。(5) description表示項(xiàng)目的描述。ant 的 depends 屬性指定了target 的執(zhí)行順序。ant 會(huì)依照 depends屬性中 target 出現(xiàn)順序依次執(zhí)行每個(gè)target 。在執(zhí)行之前,首先需要執(zhí)行它所依賴的target 。程序中的名為run的 target 的 depends屬性 compile ,而名為 compile 的 target 的 depends 屬性是 prepare ,所以這幾個(gè)target 執(zhí)行的順序是prepare-compile-run。一個(gè) tar

8、get 只能被執(zhí)行一次,即使有多個(gè)target 依賴于它。如果沒有if 或 unless 屬性, target 總會(huì)被執(zhí)行。3.標(biāo)簽該標(biāo)簽用于創(chuàng)建一個(gè)目錄,它有一個(gè)屬性dir 用來指定所創(chuàng)建的目錄名,其代碼如下: 通過以上代碼就創(chuàng)建了一個(gè)目錄,這個(gè)目錄已經(jīng)被前面的property 標(biāo)簽所指定。4. 標(biāo)簽該標(biāo)簽用來生成一個(gè)jar 文件,其屬性如下。(1) destfile表示 jar 文件名。(2) basedir表示被歸檔的文件名。(3) includes表示別歸檔的文件模式。(4) exchudes表示被排除的文件模式。5 標(biāo)簽該標(biāo)簽用于編譯一個(gè)或一組java 文件,其屬性如下: (1).s

9、rcdir 表示源程序的目錄。(2).destdir表示 class 文件的輸出目錄。(3).include表示被編譯的文件的模式。(4).excludes表示被排除的文件的模式。(5).classpath表示所使用的類路徑。(6).debug 表示包含的調(diào)試信息。(7).optimize表示是否使用優(yōu)化。(8).verbose 表示提供詳細(xì)的輸出信息。(9).fileonerror表示當(dāng)碰到錯(cuò)誤就自動(dòng)停止。6 標(biāo)簽該標(biāo)簽用來執(zhí)行編譯生成的.class 文件,其屬性如下。(1).classname 表示將執(zhí)行的類名。(2).jar 表示包含該類的jar 文件名。(3).classpath所表示

10、用到的類路徑。(4).fork 表示在一個(gè)新的虛擬機(jī)中運(yùn)行該類。(5).failonerror表示當(dāng)出現(xiàn)錯(cuò)誤時(shí)自動(dòng)停止。(6).output 表示輸出文件。(7).append表示追加或者覆蓋默認(rèn)文件。7.標(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)值為不列出。8. 標(biāo)簽該標(biāo)簽用于文件或文件集的拷貝,其屬

11、性如下。(1).file 表示源文件。(2).tofile 表示目標(biāo)文件。(3).todir 表示目標(biāo)目錄。(4).overwrite 表示指定是否覆蓋目標(biāo)文件,默認(rèn)值是不覆蓋。(5).includeemptydirs 表示制定是否拷貝空目錄,默認(rèn)值為拷貝。(6).failonerror 表示指定如目標(biāo)沒有發(fā)現(xiàn)是否自動(dòng)停止,默認(rèn)值是停止。(7).verbose 表示制定是否顯示詳細(xì)信息,默認(rèn)值不顯示。ant 的數(shù)據(jù)類型在構(gòu)建文件中為了標(biāo)識(shí)文件或文件組,經(jīng)常需要使用數(shù)據(jù)類型。數(shù)據(jù)類型包含在org.apache.tool.ant.types包中。下面簡(jiǎn)單介紹構(gòu)建文件中一些常用的數(shù)據(jù)類型。1. ar

12、gument 類型由 ant 構(gòu)建文件調(diào)用的程序, 可以通過 元素向其傳遞命令行參數(shù),如 apply,exec 和 java任務(wù)均可接受嵌套 元素,可以為各自的過程調(diào)用指定參數(shù)。以下是 的所有屬性。(1).values 是一個(gè)命令參數(shù)。如果參數(shù)種有空格,但又想將它作為單獨(dú)一個(gè)值,則使用此屬性。(2).file 表示一個(gè)參數(shù)的文件名。在構(gòu)建文件中,此文件名相對(duì)于當(dāng)前的工作目錄。(3).line 表示用空格分隔的多個(gè)參數(shù)列表。(4).path 表示路徑。2.ervironment 類型由 ant 構(gòu)建文件調(diào)用的外部命令或程序, 元素制定了哪些環(huán)境變量要傳遞給正在執(zhí)行的系統(tǒng)命令, 元素可以接受以下屬

13、性。(1).file 表示環(huán)境變量值得文件名。此文件名要被轉(zhuǎn)換位一個(gè)絕對(duì)路徑。(2).path 表示環(huán)境變量的路徑。ant 會(huì)將它轉(zhuǎn)換為一個(gè)本地約定。(3).value 表示環(huán)境變量的一個(gè)直接變量。(4).key 表示環(huán)境變量名。注意file path 或 value 只能取一個(gè)。3.filelist類型 filelist 是一個(gè)支持命名的文件列表的數(shù)據(jù)類型,包含在一個(gè)filelist 類型中的文件不一定是存在的文件。以下是其所有的屬性。(1).dir 是用于計(jì)算絕對(duì)文件名的目錄。(2).files 是用逗號(hào)分隔的文件名列表。(3).refid 是對(duì)某處定義的一個(gè) 的引用。注意dir 和 fi

14、les 都是必要的,除非指定了refid(這種情況下,dir 和 files 都不允許使用)。4.fileset類型fileset 數(shù)據(jù)類型定義了一組文件,并通常表示為 元素。不過,許多ant 任務(wù)構(gòu)建成了隱式的fileset, 這說明他們支持所有的fileset 屬性和嵌套元素。以下為fileset 的屬性列表。(1).dir 表示 fileset 的基目錄。(2).casesensitive的值如果為false ,那么匹配文件名時(shí),fileset 不是區(qū)分大小寫的,其默認(rèn)值為 true 。(3).defaultexcludes 用來確定是否使用默認(rèn)的排除模式,默認(rèn)為true 。(4).ex

15、cludes 是用逗號(hào)分隔的需要派出的文件模式列表。(5).excludesfile 表示每行包含一個(gè)排除模式的文件的文件名。(6).includes 是用逗號(hào)分隔的,需要包含的文件模式列表。(7).includesfile 表示每行包括一個(gè)包含模式的文件名。5.patternset 類型fileset 是對(duì)文件的分組,而patternset是對(duì)模式的分組,他們是緊密相關(guān)的概念。 支持 4 個(gè)屬性: includes excludex includexfile 和 excludesfile, 與 fileset 相同。patternset 還允許以下嵌套元素:include,exclude,i

16、ncludefile 和 excludesfile 。6.filterset 類型filterset 定義了一組過濾器,這些過濾器將在文件移動(dòng)或復(fù)制時(shí)完成文件的文本替換。主要屬性如下:(1).begintoken 表示嵌套過濾器所搜索的記號(hào),這是標(biāo)識(shí)其開始的字符串。(2).endtoken表示嵌套過濾器所搜索的記號(hào)這是標(biāo)識(shí)其結(jié)束的字符串。(3).id 是過濾器的唯一標(biāo)志符。(4).refid 是對(duì)構(gòu)建文件中某處定義一個(gè)過濾器的引用。7.path 類型path 元素用來表示一個(gè)類路徑,不過它還可以用于表示其他的路徑。在用作揖個(gè)屬性時(shí),路經(jīng)中的各項(xiàng)用分號(hào)或冒號(hào)隔開。在構(gòu)建的時(shí)候, 此分隔符將代替當(dāng)

17、前平臺(tái)中所有的路徑分隔符,其擁有的屬性如下。(1).location 表示一個(gè)文件或目錄。ant 在內(nèi)部將此擴(kuò)展為一個(gè)絕對(duì)路徑。(2).refid 是對(duì)當(dāng)前構(gòu)建文件中某處定義的一個(gè)path 的引用。(3).path 表示一個(gè)文件或路徑名列表。8.mapper類型mapper 類型定義了一組輸入文件和一組輸出文件間的關(guān)系,其屬性如下。(1).classname 表示實(shí)現(xiàn)mapper 類的類名。當(dāng)內(nèi)置mapper 不滿足要求時(shí),用于創(chuàng)建定制mapper 。(2).classpath表示查找一個(gè)定制mapper 時(shí)所用的類型路徑。(3).classpathref是對(duì)某處定義的一個(gè)類路徑的引用。(4).from 屬性的含義取決于所用的mapper 。(5).to 屬性的含義取決于所用的mapper 。(6).type 屬性的取值為identity ,flatten glob merge regexp 其中之一,它定義了要是用的內(nèi)置 mapper 的類型。ant 的運(yùn)行安裝好 ant 并且配置好路徑之后,在命令行中切換到構(gòu)建文件的目錄,輸入 ant 命令就可以運(yùn)行 ant. 若沒有指定任

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論