二、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 - 必须包括的文件模式的列表,以逗号或空格分隔。若是忽略,将包括全部文件