2008-10-01 52 views
14

我想刪除名稱中包含「tmp」的根目錄下的所有目錄和子目錄。這應該包括任何.svn文件。我的第一個猜測是使用如何用Ant刪除目錄的dirset?

<delete> 
    <dirset dir="${root}"> 
      <include name="**/*tmp*" /> 
    </dirset> 
</delete> 

這似乎並沒有工作,因爲你不能窩在一個delete標籤dirset

這是一個正確的方法,還是應該做別的事情?

  • ant version == 1.6.5。
  • Java版本1.6.0_04 ==

回答

24

這裏是爲我工作的回答:

<delete includeemptydirs="true"> 
    <fileset dir="${root}" defaultexcludes="false"> 
     <include name="**/*tmp*/**" /> 
    </fileset> 
</delete> 

我有一個更加複雜,我需要刪除.svn目錄了。由於defaultexcludes.*文件被排除在外,因此空目錄並非真空,因此未被刪除。

屬性includeemptydirs(謝謝,閃爍,XL-Plüschhase)使尾隨**通配符匹配空字符串。

5

嘗試:

<delete includeemptydirs="true"> 
    <fileset dir="${root}"> 
      <include name="**/*tmp*/*" /> 
    </fileset> 
</delete> 

三江源flicken!

+0

要刪除目錄,您需要添加ncludeemptydirs =「true」,如下所述。 – flicken 2008-10-01 17:18:43

4

我只是想補充一點,對我而言,解決方案的一部分是將/**附加到包含路徑的末尾。我嘗試了以下刪除的Eclipse .settings目錄:

<delete includeemptydirs="true"> 
    <fileset dir="${basedir}" includes"**/.settings"> 
</delete> 

,但它沒有工作,直到我把它改爲如下:

<delete includeemptydirs="true"> 
    <fileset dir="${basedir}" includes"**/.settings/**"> 
</delete> 

出於某種原因,附加/**的路徑刪除文件匹配目錄,所有子目錄中的所有文件,子目錄以及匹配的目錄。追加/*僅刪除匹配目錄中的文件,但不會刪除匹配的目錄。