屬性、路徑參考


你可以使用<property>標籤來定義屬性,例如:
<property name="src.dir" value="src"/>
<property name="bin.dir" value="bin"/>
<property name="bak.dir" value="bak"/>
 
屬性都是由name/value組成的,如果在執行ant指令時沒有特別指定屬性值,預設使用value上定義的值,如果要指定某個屬性,則可如下執行ant指令,例如指定bin.dir:
ant -Dbin.dir="WEB-INF/classes"
 
也可以使用<property>取得環境變數,例如下面的建構檔案嘗試取得JAVA_HOME並顯示之,如果沒有設定,則顯示沒有設定該環境變數的訊息:
<project name="envSample" default="deploy" basedir=".">
    <property environment="env"/>
    <target name="checkJavaHome" unless="env.JAVA_HOME">
        <fail message="JAVA_HOME must be set!"/>
    </target>
    <target name="compile">
    </target>
    <target name="deploy" depends="checkJavaHome,compile">
        <echo>Deploying to \${env.JAVA_HOME}</echo>
    </target>
</project>
 
透過設定一個屬性檔案,之後在建構檔案中載入它的方法如下:
<property file="local.properties">.
 
也可以透過ant指令執行建構檔案時將屬性設定為系統變數,例如:
<sysproperty key="JAVA_HOME" value="\${javaHome}"/>
 
還有一些方法可以取得系統屬性,例如下面的方式可以取得使用者目錄:
<echo message="user.home = \${user.home}"/>

可以使用<path>來設定路徑參考,使用<pathelement>來指定目錄或檔案。例如:
<path id="1">
    <pathelement location="."/>
    <pathelement location="./lib/junit.jar"/>
</path>
 
上面的例子也可以使用分號設定一系列位置,設定:
<path id="1">
    <pathelement location=".;./lib/junit.jar"/>
</path>
 
您也可以使用<fileset>來指定某個目錄下的檔案,例如:
<path id="2">
    <fileset dir="lib">
        <include name="**/*.jar"/>
    </fileset>
</path>
 

<include><exclude>標籤用來包括或排除檔案(或是可以使用includesexcludes屬性),可以在上面使用表示式來比對,*表示零個或多個符合,?表示符合一個字元。

關於設定CLASSPATH的問題,就可以參考先前設定的路徑,設定CLASSPATH是使用<classpath>,例如在進行<javac>任務時,可以如下參考之前設定的路徑:
<javac srcdir="./src" destdir="./classes">
    <classpath refid="1"/>
</javac>
 
也可以直接於<classpath>中設定<pathelement>。例如:
<javac srcdir="./src" destdir="./classes">
    <classpath refid="1">
        <pathelement location="."/>
        <pathelement location="./lib/junit.jar"/>
    </classpath>
</javac>