一般來說,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)目元素
屬性 | 描述 |
項(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:\>