2009-04-21 85 views
3

我在各種目錄中有一堆子項目。我想將它們指定爲一個列表,然後對於給定的目標,我希望逐個遍歷每個目標,並調用subant。如何將目標應用於Ant中的項目子列表?

我有一樣的東西:

<target name="run"> 
    <subant target="run" failonerror="true" verbose="true"> 
     <fileset dir="${projectA}" includes="build.xml"/> 
    </subant> 
    <subant target="run" failonerror="true" verbose="true"> 
     <fileset dir="${projectB}" includes="build.xml"/> 
    </subant> 
</target> 

但我將不得不爲每個項目和每個目標設置單獨的subant線。我想要做的就是創建一個屬於子項目列表的屬性,並以某種方式使用它。它應該是簡單的,但....

回答

5

您可以定義一個宏來做到這一點:

<macrodef name="iterate-projects"> 
    <attribute name="target" /> 
    <sequential> 
     <subant target="@{target}"> 
      <filelist dir="${src_dir}"> 
       <file name="projectA/build.xml"/> 
       <file name="projectB/build.xml"/> 
       <file name="projectC/build.xml"/> 
      </filelist> 
     </subant> 
    </sequential> 
</macrodef> 
從其他任何任務

然後,您可以調用了一個目標,所有的建立在序列中,如:

<target name="clean" description="Clean all projects"> 
    <iterate-projects target="clean"/> 
</target> 
+0

不錯,當我設置src_dir爲..(我的buildAll項目與其他項目處於同一級別)時,它運行良好。 – 2009-04-21 21:37:54

相關問題