一般來說,Ant 的構建文件默認為 build.xml,放在項目頂層目錄中。然而,并沒有限制構建文件必須命名為 bulid.xml,也并不限制放在項目頂層目錄中。你可以將構建文件命名為其他名字,也可以將它放在項目的其他地方。
這個教程將以簡單的方式向你展示如何利用 Apache Ant 來自動地構建和部署項目的過程。在完成本教程的學習以后,你將會發(fā)現你已經具備下一階段學習 Apache Ant 中等水平的專業(yè)知識 。
對于下面的練習,創(chuàng)建一個文件命名為 build.xml 的文件,存儲在你電腦的任意地方 ,并包含一下的內容:
<?xml version="1.0"?>
<project name="Hello World Project" default="info">
<target name="info">
<echo>Hello World - Welcome to Apache Ant!</echo>
</target>
</project>
注意到上面的練習中,在 xml 文件的聲明前面沒有任何空行或者空格。如果你在寫 xml 文件的聲明時加入了空行或者空格,執(zhí)行 ant -build 操作時,將會出現下面的錯誤信息:
The processing instruction target matching "[xX][mM][lL]" is not allowed.
錯誤信息的意思是:處理指令目標匹配 "[xX][mM][lL]" 不被允許。所有的構建文件需要包含項目元素 (project 標簽) 和至少一個目標元素 (target 標簽)。
構建文件的項目元素
| 屬性 | 描述 |
| 項目名 (name) | 表示項目的名稱。(可選) |
| 默認 (default) | 表示構建腳本默認運行的目標,即制定默認的 target。一個項目 (project) 可以包含多個目標 (target)。(必須) |
| 基準目錄 (basedir) | 表示當該屬性沒有指定時,使用 Ant 的構件文件的附目錄作為基準目錄。(可選) |
一個目標 (target) 是一系列你想運行的任務 (tasks),運行時看成一個單元。在我們的例子中,我們用一個簡單的目標來為用戶提供一個有信息的消息。
目標和目標之間可以有依賴關系。舉個例子,一個部署 (deploy) 目標可能依賴于封裝 (package) 目標,而這個封裝目標可能又依賴于編譯 (compile) 目標等。依賴關系被表示成依賴屬性 (depends)。例如:
<target name="deploy" depends="package">
....
</target>
<target name="package" depends="clean,compile">
....
</target>
<target name="clean" >
....
</target>
<target name="compile" >
....
</target>
構建文件的目標元素有以下屬性:
| 屬性 | 描述 |
|---|---|
| 目標名 (name) | 表示目標的名稱。(必須) |
| 依賴 (depends) | 用于描述 target 之間的依賴關系,若與多個 target 存在依賴關系時,需要以“,”間隔。Ant 會依照 depends 屬性中 target 出現的順序依次執(zhí)行每個 target。被依賴的 target 會先執(zhí)行。(可選) |
| 描述 (description) | 關于 target 功能的簡單描述。(可選) |
| 如果 (if) | 用于驗證指定的屬性是否存在,若不存在,所在 target 將不會被執(zhí)行。(可選) |
| 除非 (unless) | 該屬性的功能與 if 屬性的功能正好相反,它也用于驗證指定的屬性是否存在,若不存在,所在 target 將會被執(zhí)行。(可選) |
在上面的例子中 echo 任務主要負責打印消息。在我們的例子中,執(zhí)行 echo 任務后,打印出 “hello world” 消息。
為了運行 ant 的構建文件,打開命令提示符并導航到 build.xml 建立的文件夾。輸入 ant info 命令或者 ant 命令。這兩種命令都可以運行,因為 info 是構建文件的默認目標。你講會看到下面的輸出信息:
C:\>ant
Buildfile: C:\build.xml
info: [echo] Hello World - Welcome to Apache Ant!
BUILD SUCCESSFUL
Total time: 0 seconds
C:\>