2、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.的前缀就可以了。
除了上面的属性之外,fileset还可以嵌套多个(0...n)以下的patternset元素
<exclude> , <include> , <patternset> , <excludesfile> , <includesfile> .
关于patternset的用法,我会在patternset这个部分专门总结。
例子:
<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>
4、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属性的用法一样
0..n 个嵌套的 <includesfile> 和 <excludesfile> 元素,它们支持以下属性:
attribute | description
----------------|------------------------------------------------
name |必须指定,内容为相应的include和exclude的模式,但是只能是单个
if |可选,和target的if属性的用法一样
unless |可选,和target的unless属性的用法一样
例子:
patternset的定义
<patternset id="xml.files">
<include name="**/*.dtd,**/*.xml,**/*.xslt"/>
</patternset>
patternset的引用
<fileset dir="${src.dir}">
<patternset refid="${xml.files}"/>
</fileset>
1. available
格式:
<available property="prefix" value="${basedir}/.." file="${basedir}/../build/jetty-build.xml"/>
用途:
如果指定的file存在,就设置这个property为指定的value
<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>