1. project元素
project 元素是 Ant 構件檔的根項目, Ant 構件檔至少應該包含一個 project 元素,否則會發生錯誤。在每個 project 元素下,可包含多個 target 元素。接下來向讀者展示一下 project 元素的各屬性。
- name 屬性
用於指定 project 元素的名稱。 - default 屬性
用於指定 project 默認執行時所執行的 target 的名稱。 - basedir 屬性
用於指定基路徑的位置。該屬性沒有指定時,使用 Ant 的構件檔的附目錄作為基準目錄。
<?xml version="1.0" ?> <project name ="antPro" default ="getBaseDir" basedir ="C:/ThinkInJAVACode"> <target name="getBaseDir"> <echo message="The base dir is: ${basedir}"/> </target> </project>
從上例可以看出,在這裏定義了default 屬性的值為getBaseDir ,即當運行ant 命令時,如果沒有指明待執行的target,則將執行默認的target–getBaseDir 。此外,還定義了basedir 屬性的值為 “C:/ThinkInJAVACode” ,進入”C:/ThinkInJAVACode” 後運行ant 命令,得一下結果:
Buildfile: C:\ThinkInJAVACode\build.xml
sayBaseDir:
[echo] The base dir is: C:\ThinkInJAVACode
BUILD SUCCESSFUL
Total time: 0 seconds
2. target 元素
target為Ant的基本執行單元,它可以包含一個或多個具體的任務。多個target 可以存在相互依賴關系。它有如下屬性:
- name 屬性
指定 target 元素的名稱,這個屬性在一個 project 元素中是唯一的。我們可以通過指定 target 元素的名稱來指定某個 target 。 - depends 屬性
用於描述 target 之間的依賴關系,若與多個 target 存在依賴關系時,需要以「,」間隔。 Ant 會依照 depends 屬性中 target 出現的順序依次執行每個 target 。被依賴的 target 會先執行。 - if 屬性
用於驗證指定的屬性是否存在,若不存在,所在 target 將不會被執行。 - unless 屬性
該屬性的功能與 if 屬性的功能正好相反,它也用於驗證指定的屬性是否存在,若不存在,所在 target 將會被執行。 - description 屬
性該屬性是關於 target 功能的簡短描述和說明。
舉例說明如下:
<?xml version="1.0" ?> <project name ="targetPro" default="targetB"> <target name="targetA" if ="ant.java.version"> <echo message ="JAVA Version: ${ant.java.version}"/> </target> <target name="targetB" depends ="targetA" unless ="philander"> <description> a depend example! </description> <echo message ="The base dir is: ${basedir}"/> </target> </project>
從以下結果後可以看到,我們運行的是名為 targetB 的target ,由於它依賴於targetA ,所以 targetA 將首先被執行,同時因為系統配置了JDK,所以 ant.java.version 屬性存在,執行了targetA,輸出資訊:”[echo] JAVA Version: 1.6 “,targetA 執行完畢後,接著執行 targetB ,因為philander不存在,而unless屬性是在不存在時進入所在target 的,由此可知 targetB 得以執行,輸出資訊:
[echo] The base dir is: C:\ThinkInJAVACode”。
Buildfile: C:\ThinkInJAVACode\build.xml
targetA:
[echo] JAVA Version: 1.6
[echo] JAVA Version: 1.6
targetB:
[echo] The base dir is: C:\ThinkInJAVACode
BUILD SUCCESSFUL
Total time: 0 seconds
3. property 元素
property元素可看作參量或者參數的定義,project 的屬性可以通過 property 元素來設定,也可在 Ant 之外設定。若要在外部引入某檔,例如 build.properties 檔,可以通過如下內容將其引入:
<property file="build.properties"/>
property 元素可用作 task 的屬性值。在 task 中是通過將屬性名放在「 ${ 」和「 } 」之間,並放在 task 屬性值的位置來實現的。
Ant 提供了一些內置的屬性,它能得到的系統屬性的清單與 JAVA 文檔中 System.getPropertis() 方法得到的屬性一致,這些系統屬性可參考 sun 網站的說明。同時, Ant 還提供了一些它自己的內置屬性,如下:
- basedir:project 基目錄的絕對路徑;
- ant.file:buildfile的絕對路徑,上例中ant.file值為C:\ThinkInJAVACode\build.xml;
- ant.version:Ant 的版本資訊,本文為1.8.1 ;
- ant.project.name:當前指定的project的名字,即前文說到的project的name屬性值;
- ant.java.version:Ant 檢測到的JDK版本,本文為 1.6 。
舉例說明如下:
<? xml version="1.0" ?> <project name ="propertyPro" default ="example"> <property name ="name" value ="philander"/> <property name ="age" value ="25"/> <target name ="example"> <echo message ="name: ${name}, age: ${age}"/> </target> </project>
上例中用戶設置了名為name 和age的兩個屬性,這兩個屬性設置後,在下文中可以通過 ${name} 和 ${age} 分別取得這兩個屬性值。