如何用Ant删除dirset目录?

jam*_*esh 13 java ant build

我想删除根目录下名称中包含"tmp"的所有目录和子目录.这应该包括任何.svn文件.我的第一个猜测是使用

<delete>
    <dirset dir="${root}">
          <include name="**/*tmp*" />
    </dirset>
</delete>
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,因为您无法dirsetdelete标记中嵌套.

这是一种正确的方法,还是我应该做其他事情?

  • 蚂蚁版== 1.6.5.
  • java版本== 1.6.0_04

jam*_*esh 23

这是对我有用的答案:

<delete includeemptydirs="true">
    <fileset dir="${root}" defaultexcludes="false">
       <include name="**/*tmp*/**" />
    </fileset>
</delete>
Run Code Online (Sandbox Code Playgroud)

我有一个额外的复杂功能,我需要删除.svn目录.有了defaultexcludes,.*文件被排除,所以空目录不是真的空,所以没有被删除.

属性includeemptydirs(thanks,flicken,XL-Plüschhase)使尾随**通配符与空字符串匹配.


Bla*_*ohr 5

尝试:

<delete includeemptydirs="true">
    <fileset dir="${root}">
          <include name="**/*tmp*/*" />
    </fileset>
</delete>
Run Code Online (Sandbox Code Playgroud)

谢谢你!


小智 5

我只是想补充一点,对我有用的解决方案部分附加/**到包含路径的末尾。我尝试了以下删除 Eclipse .settings 目录:

<delete includeemptydirs="true">
    <fileset dir="${basedir}" includes"**/.settings">
</delete>
Run Code Online (Sandbox Code Playgroud)

但直到我将其更改为以下内容后,它才起作用:

<delete includeemptydirs="true">
    <fileset dir="${basedir}" includes"**/.settings/**">
</delete>
Run Code Online (Sandbox Code Playgroud)

由于某种原因,追加/**到路径会删除匹配目录中的文件、所有子目录中的所有文件、子目录和匹配目录。追加/*只会删除匹配目录中的文件,但不会删除匹配目录。