你不需要逃避这个。只需使用<include/>
而不是includes
arg。试试这个:
<project name="test" default="clean">
<dirname property="build.dir" file="${ant.file.test}" />
<target name="clean">
<delete>
<fileset dir="${build.dir}/test">
<include name="**/*,*.xml" />
</fileset>
</delete>
</target>
</project>
顺便一提。你不应该在你的论点中使用.
(点) 。dir
如果你想删除你有文件的目录中的文件,build.xml
你应该传递绝对路径(要做到这一点,你可以<dirname/>
像我的例子一样使用)。如果您将使用.
,那么您将遇到嵌套构建的问题。让我们想象一下,您有两个删除文件的构建,但第一个构建也调用第二个构建:
主目录/build1.xml
<delete dir="." includes="**/*.txt" />
<!-- call clean target from build2.xml -->
<ant file="./subdir/build2.xml" target="clean"/>
主目录/子目录/build2.xml
<delete dir="." includes="**/*.txt" />
在这种情况下,build2.xml 不会删除 subdir 中的 *.txt 文件,而是删除 maindir 中的 *.txt 文件,因为 ant 属性将被传递给 build2.xml。当然你可以用它inheritAll="false"
来省略它,但根据我的经验,我知道.
在路径中使用会给你带来很多问题。