用Ant構建指令碼(4)

chszs發表於2007-01-26
版權宣告:本文為博主chszs的原創文章,未經博主允許不得轉載。 https://blog.csdn.net/chszs/article/details/1494378

 用Ant構建指令碼(4)

五、Ant相關
1、標識過濾器
一個專案有一套標識,如果發現當一個檔案被拷貝時,或許能自動進行擴充。當在這個支援任務中選擇了過濾器-拷貝行為,才支援這種方式。在buildfile中,通過過濾器任務或許能設定它。
因為這能導致很大的潛在危害,在<filter>任務中標識的標識名在檔案中必須以@token@的形式給出。這個標識語法匹配其它建立的系統的語法,該系統完成過濾並保留足夠地程式和指令碼語言的相交部分,如同文獻系統。
※※注意:如果在一個檔案中出現了帶有@token@的標識,但卻又沒有任何過濾器與其相聯絡,這將不發生改變。因此,沒有避免的方法可以用,但是隻要你選擇了合適的標識名,這不會產生任何問題。
警告:如果你拷貝二進位制檔案用過濾器來開啟,你會被中斷。因為這個特徵只適用於文字檔案。

2、象路徑一樣的結構
你可以指定PATH-和CLASSPATH-type引用,通過用“:”和“;”作為分隔符。Ant會為當前作業系統轉換分隔符為正確的字元。
無論什麼情況下,象路徑一樣的值是需要指定的,元素巢狀也可以用。下面這個是通常的結構:
<classpath>
  <pathelement path=”%{classpath}”/>
  <pathelement location=”lib/helper.jar”/>
</classpath>
屬性的位置指定了一個單個的檔案或羨慕基本目錄的相關目錄,路徑屬性可用帶冒號或分號分隔開的位置列表。它需要預先指定,換句話說,帶位置屬性的多個元素都應該被指定。
另外,通過巢狀的<dirset>、<fileset>和<filelist>元素,能指定DirSet、FileSet和FileList。
<classpath>
  <pathelement path=”${classpath}”/>
  <fileset dir=”lib”>
    <include name=”**/*.jar”/>
  </fileset>
  <pathelement location=”classes”/>
  <dirset dir=”${build.dir}”>
    <include name=”apps/**/classes”/>
    <exclude name=”apps/**/*Test*”/>
  </dirset>
  <filelist refid=”third-party_jars”>
</classpath>
如果你想為幾個任務使用同樣的路徑結構,你可以在同一級的target中用<path>元素來定義它,然後通過id屬性來引用它。
例如:
<path id=”base.path”>
  <pathelement path=”${classpath”/>
  <fileset dir=”lib”>
    <include name=”**/*.jar”/>
  </fileset>
  <pathelement location=”classes”/>
</path>
<path id=”tests.path”>
  <path refid=”base.path”/>
  <pathelement location=”testclasses”/>
</path>

3、命令列引數
有幾個帶引數的任務可以在命令列中得到處理。指定包含空格符的引數使它變得更容易,巢狀的arg元素也能使用。
value,一個單個的命令列引數,能包含空格;
file,作為命令列引數的檔名,執行時以檔案的絕對名來代替;
path,作為象路徑的字串來處理,作為單個的命令列引數,可以使用“;”或“:”來作為分隔符,Ant會把它轉換為本地平臺的習慣。
line,命令列引數的空格定界線列表。
如果可能,儘量避免使用命令列方式。

4、參考
buildfile元素的id屬效能用來引用它們自己。這有助於到處複製一個XML小片斷,例如:
<project…>
  <target…>
    <rmic…>
      <classpath>
        <pathelement location=”lib/”/>
        <pathelement path=”${java.class.path}/”/>
        <pathelement path=”${additional.path}”/>
      </classpath>
    </rmic>
  </target>
  <target…>
    <javac…>
      <classpath>
        <pathelement location=”lib/”/>
        <pathelement path=”${java.class.path}/”/>
        <pathelement path=”${additional.path}”/>
      </classpath>
    </javac>
  </target>
</project>
可以寫成如下:
<project…>
  <path id=”project.class.path”>
    <pathelement location=”lib/”/>
    <pathelement path=”${java.class.path}/”/>
    <pathelement path=”${additional.path}”/>
  </path>
  <target…>
    <rmic…>
      <classpath refid=”project.class.path”/>
    </rmic>
  </target>
  <target…>
    <javac…>
      <classpath refid=”project.class.path”/>
    </javac>
  </target>
</project>

 


相關文章