二、Environment環境變量
假設你根據你的工做環境配置了下面的property:
<property name="xalan.home" value="C:/java/xalan-j_2_1_0"/>
顯然你的buildfile到其餘開發人員的環境下面還能繼續有效的可能性很小,由於其餘人的xalan極可能在其餘目錄,使用Environment環境變量能夠解決這個問題
<property environment="env"/>
<property name="xalan.home" value="${env.XALAN_HOME}"/>
<target name="checkXalanHome" unless="env.XALAN_HOME">
<fail message="XALAN_HOME must be set!"/>
</target>
關鍵是:
<property environment="env"/>
設置了這個屬性以後,之後能夠直接引用環境變量,只要前面加一個env.的前綴就能夠了。 java
除了上面的屬性以外,fileset還能夠嵌套多個(0...n)如下的patternset元素
<exclude> , <include> , <patternset> , <excludesfile> , <includesfile> .
關於patternset的用法,我會在patternset這個部分專門總結。 less
例子:
<fileset id="sources1" dir="src"
includes="**/*.java"
excludes="**/test/**/*.java">
</fileset>
等價於
<fileset id="sources2" dir="src">
<include name="**/*.java"/>
<exclude name="**/test/**/*.java"/>
</fileset>
等價於
<fileset id="sources3" dir="src">
<patternset>
<include name="**/*.java"/>
<exclude name="**/test/**/*.java"/>
</patternset>
</fileset>
也等價於
<patternset id="non.test.source">
<include name="**/*.java"/>
<exclude name="**/test/**/*.java"/>
</patternset>
<!-- later in the same buildfile -->
<fileset id="sources4" dir="src">
<patternset refid="non.test.source"/>
</fileset> 優化
四、patternset模式集
fileset 將文件合成一個組,patternset將模式合成一個組,它們的概念很接近,其實fileset依賴於patternset來選擇文件,patternset能夠表達爲target-level,而後經過它的id來引用,也能夠直接嵌套在fileset下面,那些支持隱式 (implicit)的fileset的task也支持嵌套的patternset。
patternset支持includes, excludes, includesfile,excludesfile四個屬性,這跟fileset的用法同樣,還支持如下的嵌套的元素:
0..n 個嵌套的 <include>和<exclude>元素,它們支持如下屬性
attribute | description
----------------|------------------------------------------------
name |必須指定,內容爲相應的include和exclude的模式。
if |可選,和target的if屬性的用法同樣
unless |可選,和target的unless屬性的用法同樣 ui
0..n 個嵌套的 <includesfile> 和 <excludesfile> 元素,它們支持如下屬性:
attribute | description
----------------|------------------------------------------------
name |必須指定,內容爲相應的include和exclude的模式,可是隻能是單個
if |可選,和target的if屬性的用法同樣
unless |可選,和target的unless屬性的用法同樣 spa
例子:
patternset的定義
<patternset id="xml.files">
<include name="**/*.dtd,**/*.xml,**/*.xslt"/>
</patternset> 線程
patternset的引用
<fileset dir="${src.dir}">
<patternset refid="${xml.files}"/>
</fileset> debug
1. available
格式:
調試
<available property="prefix" value="${basedir}/.." file="${basedir}/../build/jetty-build.xml"/>
用途:
若是指定的file存在,就設置這個property爲指定的value code
<condition property="prefix" value="${basedir}"> <not> <isset property="prefix"/> </not> </condition>
<javac source="${JAVAC_SOURCE}" target="${JAVAC_TARGET}" executable="${JAVAC_EXE}" fork="yes" destdir="classes" classpath="${outDir}" classpathref="libraries" optimize="off" verbose="off" debug="on" memoryInitialSize="256M" memoryMaximumSize="512M"> <src path="${srcDir}"/> <include name="**/*.java"/> </javac>用途: 調用指定的javac去編譯src下面的全部的java源文件。 source - javac1.4以前的版本忽略此項。能夠設置爲ant.build.javac.source target - VM的版本號,據此來生成類文件。默認值依賴當前的JVM。能夠設置爲ant.build.javac.target executable - javac可執行文件的完整路徑,當fork設置爲yes,默認值爲運行ant的編譯器 fork - 爲true時在外部啓用一個新的JDK編譯線程進行編譯,默認值爲no destdir - 類文件的保存位置 classpath - 使用的類路徑 classpathref - 使用的類路徑,其它地方定義的類路徑的引用 optimize - 是否啓用編譯優化,默認值是off。自JDK1.3後被忽略 verbose - 在編譯時是否顯示詳細的信息 debug - 是否爲編譯生成調試信息,默認值爲off。若是設置爲true,根據debuglevel的屬性值來決定級別 memoryInitialSize - 若是 javac 在外部運行,則是底層 VM 的初始內存大小;不然將被忽略。默認爲標準 VM 內存設置。(例如:83886080、81920k 或 80m) memoryMaximumSize - 若是 javac 在外部運行,則是底層 VM 的最大內存大小;不然將被忽略。默認爲標準 VM 內存設置。(例如:83886080、81920k 或 80m) srcdir - Java源文件的位置 includes - 必須包括的文件模式的列表,以逗號或空格分隔。若是忽略,將包括全部文件