ant转帖

二、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文件集
fileset 表示了一套文件的集合, 一般定义为project-level,ANT的task能够经过显式(explicit)的方式来引用或者直接嵌套 fileset,若是是直接嵌套,这个时候fileset是task-level的,不少ANT的task都支持隐式(implicit)的 fileset,也就是说这些TASK支持fileset的全部属性和嵌套的子元素, 和filelist不一样的是fileset所表示的文件必须存在。 Fileset能够定义为target-level的,并经过他们的id来引用。
fileset支持如下经常使用的属性(只列出经常使用的,其余的请参考官方文档):
attribute       |  description
----------------|------------------------------------------------
id              |可选,定义了id未来就能够引用了
dir             | 必须指定,用于指定文件所在的目录
excludes        |可选,用于指定在dir指定的目录下那些不该该包括进来的文件,内容是逗号分割的文件模式(file pattern)。
excludesfile    |跟excludes相似,区别是只能包括单独的文件模式(不能用逗号分隔多个文件模式),一般状况下我习惯使用excludes,由于excludes也包括了excludesfile的功能
includes        |可选,用于指定在dir指定的目录下那些须要包括进来的文件,内容是逗号分割的文件模式(file pattern)。
includesfile    |跟includes相似,区别是只能包括单独的文件模式(不能用逗号分隔多个文件模式),一般状况下我习惯使用includes,由于includes也包括了includesfile的功能

除了上面的属性以外,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
   格式:
   调试

Xml代码 复制代码  收藏代码
  1. <available property="prefix"  
  2.        value="${basedir}/.."  
  3.        file="${basedir}/../build/jetty-build.xml"/>  
<available property="prefix"
          value="${basedir}/.."
          file="${basedir}/../build/jetty-build.xml"/>


   用途:
   若是指定的file存在,就设置这个property为指定的value code

2. condition
   格式:
  
Xml代码 复制代码  收藏代码
  1. <condition property="prefix" value="${basedir}">  
  2.     <not>  
  3.        <isset property="prefix"/>  
  4.     </not>  
  5. </condition>  
<condition property="prefix" value="${basedir}">
       <not>
          <isset property="prefix"/>
       </not>
   </condition>

  
   用途:
   若是知足了指定的条件(prefix没有被设置),则设置这个property为指定的value

3. javac
   格式:
  
Xml代码 复制代码  收藏代码
  1. <javac source="${JAVAC_SOURCE}" target="${JAVAC_TARGET}"    
  2.    executable="${JAVAC_EXE}" fork="yes" destdir="classes"    
  3.    classpath="${outDir}" classpathref="libraries"  
  4.    optimize="off" verbose="off" debug="on"  
  5.    memoryInitialSize="256M" memoryMaximumSize="512M">  
  6.    <src path="${srcDir}"/>  
  7.    <include name="**/*.java"/>  
  8. </javac>  
<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 - 必须包括的文件模式的列表,以逗号或空格分隔。若是忽略,将包括全部文件
相关文章
相关标签/搜索