鍍金池/ 教程/ 物聯(lián)網(wǎng)/ 構(gòu)建文件
生成 WAR 文件
JUnit 集成
環(huán)境搭建
Eclipse 集成
部署應(yīng)用
屬性任務(wù)
擴(kuò)展 Ant
?# 執(zhí)行 Java 代碼
構(gòu)建項(xiàng)目
構(gòu)建文件
數(shù)據(jù)類型
生成 JAR 文件
生成文檔
屬性文件
封裝應(yīng)用
介紹

構(gòu)建文件

一般來說,Ant 的構(gòu)建文件默認(rèn)為 build.xml,放在項(xiàng)目頂層目錄中。然而,并沒有限制構(gòu)建文件必須命名為 bulid.xml,也并不限制放在項(xiàng)目頂層目錄中。你可以將構(gòu)建文件命名為其他名字,也可以將它放在項(xiàng)目的其他地方。

這個(gè)教程將以簡(jiǎn)單的方式向你展示如何利用 Apache Ant 來自動(dòng)地構(gòu)建和部署項(xiàng)目的過程。在完成本教程的學(xué)習(xí)以后,你將會(huì)發(fā)現(xiàn)你已經(jīng)具備下一階段學(xué)習(xí) Apache Ant 中等水平的專業(yè)知識(shí) 。

對(duì)于下面的練習(xí),創(chuàng)建一個(gè)文件命名為 build.xml 的文件,存儲(chǔ)在你電腦的任意地方 ,并包含一下的內(nèi)容:

<?xml version="1.0"?>
   <project name="Hello World Project" default="info">

   <target name="info">
      <echo>Hello World - Welcome to Apache Ant!</echo>
   </target>

</project>

注意到上面的練習(xí)中,在 xml 文件的聲明前面沒有任何空行或者空格。如果你在寫 xml 文件的聲明時(shí)加入了空行或者空格,執(zhí)行 ant -build 操作時(shí),將會(huì)出現(xiàn)下面的錯(cuò)誤信息:

The processing instruction target matching "[xX][mM][lL]" is not allowed.

錯(cuò)誤信息的意思是:處理指令目標(biāo)匹配 "[xX][mM][lL]" 不被允許。所有的構(gòu)建文件需要包含項(xiàng)目元素 (project 標(biāo)簽) 和至少一個(gè)目標(biāo)元素 (target 標(biāo)簽)。

構(gòu)建文件的項(xiàng)目元素 有 3 個(gè)屬性:

屬性 描述
項(xiàng)目名 (name) 表示項(xiàng)目的名稱。(可選)
默認(rèn) (default) 表示構(gòu)建腳本默認(rèn)運(yùn)行的目標(biāo),即制定默認(rèn)的 target。一個(gè)項(xiàng)目 (project) 可以包含多個(gè)目標(biāo) (target)。(必須)
基準(zhǔn)目錄 (basedir) 表示當(dāng)該屬性沒有指定時(shí),使用 Ant 的構(gòu)件文件的附目錄作為基準(zhǔn)目錄。(可選)

一個(gè)目標(biāo) (target) 是一系列你想運(yùn)行的任務(wù) (tasks),運(yùn)行時(shí)看成一個(gè)單元。在我們的例子中,我們用一個(gè)簡(jiǎn)單的目標(biāo)來為用戶提供一個(gè)有信息的消息。

目標(biāo)和目標(biāo)之間可以有依賴關(guān)系。舉個(gè)例子,一個(gè)部署 (deploy) 目標(biāo)可能依賴于封裝 (package) 目標(biāo),而這個(gè)封裝目標(biāo)可能又依賴于編譯 (compile) 目標(biāo)等。依賴關(guān)系被表示成依賴屬性 (depends)。例如:

<target name="deploy" depends="package">
  ....
</target>

<target name="package" depends="clean,compile">
  ....
</target>

<target name="clean" >
  ....
</target>

<target name="compile" >
  ....
</target>

構(gòu)建文件的目標(biāo)元素有以下屬性:

屬性 描述
目標(biāo)名 (name) 表示目標(biāo)的名稱。(必須)
依賴 (depends) 用于描述 target 之間的依賴關(guān)系,若與多個(gè) target 存在依賴關(guān)系時(shí),需要以“,”間隔。Ant 會(huì)依照 depends 屬性中 target 出現(xiàn)的順序依次執(zhí)行每個(gè) target。被依賴的 target 會(huì)先執(zhí)行。(可選)
描述 (description) 關(guān)于 target 功能的簡(jiǎn)單描述。(可選)
如果 (if) 用于驗(yàn)證指定的屬性是否存在,若不存在,所在 target 將不會(huì)被執(zhí)行。(可選)
除非 (unless) 該屬性的功能與 if 屬性的功能正好相反,它也用于驗(yàn)證指定的屬性是否存在,若不存在,所在 target 將會(huì)被執(zhí)行。(可選)

在上面的例子中 echo 任務(wù)主要負(fù)責(zé)打印消息。在我們的例子中,執(zhí)行 echo 任務(wù)后,打印出 “hello world” 消息。

為了運(yùn)行 ant 的構(gòu)建文件,打開命令提示符并導(dǎo)航到 build.xml 建立的文件夾。輸入 ant info 命令或者 ant 命令。這兩種命令都可以運(yùn)行,因?yàn)?info 是構(gòu)建文件的默認(rèn)目標(biāo)。你講會(huì)看到下面的輸出信息:

C:\>ant
Buildfile: C:\build.xml

info: [echo] Hello World - Welcome to Apache Ant!

BUILD SUCCESSFUL
Total time: 0 seconds

C:\>