这是我尝试过的示例目标。事实证明,它想要删除所有内容,因为逗号分隔“ * * / *”和“封面” - 可以理解。
<target name="clean">
<delete
verbose="true">
<fileset dir="." includes="**/*.pyo"></fileset>
<fileset dir="." includes="**/*,cover"></fileset>
</delete>
</target>
如何指定嵌入式逗号?
我正在尝试学习Ant,因此我不必为不同的操作系统维护不同的构建系统。在这种情况下,它位于Python环境中,其中*,封面文件由名为Coverage的代码覆盖率检查工具创建。
答案 0 :(得分:1)
你不需要逃避这一点。只需使用<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/>
)。如果您将使用.
,那么您将遇到嵌套构建问题。让我们想象你有两个构建删除文件,但第一个构建也调用第二个构建:
MAINDIR / build1.xml
<delete dir="." includes="**/*.txt" />
<!-- call clean target from build2.xml -->
<ant file="./subdir/build2.xml" target="clean"/>
MAINDIR /子目录/ build2.xml
<delete dir="." includes="**/*.txt" />
在这种情况下,build2.xml不会删除子目录中的* .txt文件,而是删除maindir中的* .txt文件,因为ant属性将传递给build2.xml。当然你可以使用inheritAll="false"
来省略这一点,但根据我的经验,我知道在路径中使用.
会给你带来很多问题。
答案 1 :(得分:0)
除非你有其他文件的名称以封面结尾,你不想删除,只需留下逗号:
<fileset dir="." includes="**/*cover"></fileset>
如果您确实有其他文件以封面形式结束,您不想删除,请尝试使用MattDMo评论中的反斜杠建议。您可能需要对其进行双反斜杠(“**/*\\,cover
”)。
另一种可能性:你可以配置Coverage将其输出放在另一个目录中,这样你就可以删除整个目录吗?或者您可以将其配置为使用不同的输出文件名,以便您没有这个问题吗?我不熟悉Coverage,但是查看您提供的链接,看起来data_file选项可能会执行其中一个或两个。