2011-06-06 182 views
6

執行任務目前我做螞蟻:我如何在interate所有子文件夾和螞蟻

<foreach list="${myfolders}" target="bundle" 
    param="worksheet" inheritall="true"/> 

到文件夾列表上執行目標「捆綁」。但問題是我需要設置這個列表。我如何使用Ant來遍歷給定父目錄的所有文件夾?

如果有一種方法可以做到這一點,也排除會更好特定的文件夾。謝謝。

回答

-1

我使用foreach任務從ant-contrib了類似的工作。這將爲列表中的每個條目調用指定的目標,並且每次都將該條目作爲參數傳遞。

+0

我正在尋找一種方式來做到這一點無需提供清單。子文件夾的集合在我的情況下不斷變化,我不希望總是相應地更新列表。 – Solomon 2011-06-06 16:05:11

+0

看起來大衛W已經擴大了這一點。 「列表」實際上可以是自動生成的東西。 – Ben 2011-06-07 10:43:57

8

您可以提供<dirset><foreach>任務進行操作:

<foreach target="bundle" param="worksheet" inheritall="true"> 
     <path> 
      <dirset dir="${subDir}"> 
       <include name="*"/> 
      </dirset> 
     </path> 
</foreach> 

注意,當我做這樣的list不使用參數。

您不能直接在<foreach>下使用<dirset>,因爲您可以使用<fileset>。但是,如上所示,您可以將<dirset>置於<path>之下。 <include name="*"/>可防止遞歸目錄樹。

+0

謝謝。當我嘗試它時,我得到一個錯誤「''類型不支持嵌套的'路徑'元素」。如果我拿出''然後我得到錯誤「的''類型不支持嵌套的‘dirset’元素」您正在使用哪種版本的antcontrib罐子 – Solomon 2011-06-06 17:54:00

+0

?試試我的[build.xml](http://dl.dropbox.com/u/433257/build.xml)。這是我用來測試的。 – 2011-06-06 21:29:29

+0

這工作完美。應該被接受。 – prolink007 2012-10-01 14:20:18

0

您可以subant

例做到這一點:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="subant" default="subant1"> 

     <target name="subant1"> 

      <subant target=""> 

       <dirset dir="." includes="*"/> 
       <target name="release" /> 

      </subant> 

     </target> 

</project>