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 - 必須包括的文件模式的列表,以逗號或空格分隔。若是忽略,將包括全部文件
相關文章
相關標籤/搜索