◎Ant的使用 - buildfile
前面簡單的介紹了Ant
http://www.aygfsteel.com/x-29/archive/2007/04/09/109426.html
現在來看一下,如何編寫Ant的buildfile.
buildfile是一個xml文檔,默認命名為build.xml,在Ant的buildfile中,我們可以設定屬性[property]、任務[task],每個buildfile中可以設定多個任務[task],這些任務可以是編譯源碼、生成Doc文檔、程序測試等;通常會將這些任務組織為一個目標[target]。
看一個簡單的build.xml,大概了解一下
可以看到build.xml中,project作為根元素(每個buildfile中都會有一個project),然后是定義了兩個屬性以及一個target。
project元素和target元素的屬性,可以看下面的表。
在使用
提示:我們可以在ant后面指定想要執行的target,缺省情況下會使用默認的(即:project元素default屬性設定的target)。
通常,要運行一個程序,首先得要編譯它的源碼,生成可執行文件,然后才運行這個可執行文件。 可以看到這是由兩個任務組成,而且運行可執行文件任務依賴編譯源碼任務。Ant的buildfile中可以定義多個target,同時一個target的執行可以依賴于另一個target,表描這種依賴關系可以通過target元素的depends屬性,depends可以設定多個target(以逗號間隔),如:
depends屬性設定的依賴是按左到右的順序執行,執行命令Ant run,會先執行"mkdir"目標,執行完后,再到"complie",最后才執行"run"目標。
<property>元素,主要是設置一些常用的屬性,每個屬性都會有一個名稱(name),以后再做詳解。
有關Ant的buildfile,就說到這,下篇說說Ant的常用任務[task]標簽
http://www.aygfsteel.com/x-29/archive/2007/04/09/109426.html
現在來看一下,如何編寫Ant的buildfile.
buildfile是一個xml文檔,默認命名為build.xml,在Ant的buildfile中,我們可以設定屬性[property]、任務[task],每個buildfile中可以設定多個任務[task],這些任務可以是編譯源碼、生成Doc文檔、程序測試等;通常會將這些任務組織為一個目標[target]。
看一個簡單的build.xml,大概了解一下
<project name="addressbook" default="compile" basedir=".">
<!-- ===================== Property Definitions =========================== -->
<property name="tomcat.home" value="C:/jakarta-tomcat" />
<property name="app.home" value="." />
<property name="src.home" value="${app.home}/src"/>
<property name="lib.home" value="${app.home}/WEB-INF/lib"/>
<property name="classes.home" value="${app.home}/WEB-INF/classes"/>
<!-- ==================== "compile" Target ============================= -->
<target name="compile" >
<javac srcdir="${src.home}" destdir="${classes.home}" debug="yes" >
<classpath refid="compile.classpath"/>
</javac>
</target>
</project>
<!-- ===================== Property Definitions =========================== -->
<property name="tomcat.home" value="C:/jakarta-tomcat" />
<property name="app.home" value="." />
<property name="src.home" value="${app.home}/src"/>
<property name="lib.home" value="${app.home}/WEB-INF/lib"/>
<property name="classes.home" value="${app.home}/WEB-INF/classes"/>
<!-- ==================== "compile" Target ============================= -->
<target name="compile" >
<javac srcdir="${src.home}" destdir="${classes.home}" debug="yes" >
<classpath refid="compile.classpath"/>
</javac>
</target>
</project>
可以看到build.xml中,project作為根元素(每個buildfile中都會有一個project),然后是定義了兩個屬性以及一個target。
project元素和target元素的屬性,可以看下面的表。
標簽 | 屬性 | 描述 | 必需的 |
project | name | 項目名稱 | No |
default | 沒有指定target時,缺省使用的target | Yes | |
basedir | 作為計算其它路徑的基路徑。該屬性可以被basedir property覆蓋,當覆蓋時,該屬性被忽略。如果屬性和basedir property都沒有設定,就使用buildfile文件的父目錄 | No | |
target | name | target的名字 | Yes |
depends | 用逗號隔開的target名字列表,設定些屬性,就意味著本target將依賴于depends設定的target | No | |
if | 執行target所需設定的屬性名 | No | |
unless | 執行target所需要清除設定的屬性名 | No | |
description | 關于target的描述 | No |
在使用
D:\>Ant
執行時,會先進入到"complie"目標(上面的Ant沒有指定target,所以會使用project的default值),編譯源碼(javac task)提示:我們可以在ant后面指定想要執行的target,缺省情況下會使用默認的(即:project元素default屬性設定的target)。
通常,要運行一個程序,首先得要編譯它的源碼,生成可執行文件,然后才運行這個可執行文件。 可以看到這是由兩個任務組成,而且運行可執行文件任務依賴編譯源碼任務。Ant的buildfile中可以定義多個target,同時一個target的執行可以依賴于另一個target,表描這種依賴關系可以通過target元素的depends屬性,depends可以設定多個target(以逗號間隔),如:
<target name="run" depends="mkdir,complie">
<!--
運行程序
-->
</target>
"run"目標依賴"mkdir"和"complie"目標,也就是運行程序之前,要先建立相關文檔目錄,編譯源碼生成可執行文件。<!--
運行程序
-->
</target>
depends屬性設定的依賴是按左到右的順序執行,執行命令Ant run,會先執行"mkdir"目標,執行完后,再到"complie",最后才執行"run"目標。
<property>元素,主要是設置一些常用的屬性,每個屬性都會有一個名稱(name),以后再做詳解。
有關Ant的buildfile,就說到這,下篇說說Ant的常用任務[task]標簽