如果文件集排除为空,则 ANT 删除失败

ANT delete fails if fileset exclude is empty

如果目录包含 FOO.xml 或 BAR.xml(或两者),此 ANT 删除任务将完美运行,但如果它们不存在,则不会 return 成功。

<delete includeemptydirs="true" followsymlinks="false">
    <fileset dir="${apache.base}" erroronmissingdir="false">
        <include name="**/*"/>
        <exclude name="**/FOO.xml **/BAR.xml"/>
     </fileset>
</delete>  

有没有一种方法可以让它工作而不管文件集的排除部分是否为空?

您的排除模式包含不正确的语法。当使用嵌套的 includeexclude 元素时,需要单独列出文件名模式,例如:

<delete includeemptydirs="true" followsymlinks="false">
    <fileset dir="${apache.base}" erroronmissingdir="false">
        <exclude name="**/FOO.xml"/>
        <exclude name="**/BAR.xml"/>
        <include name="**/*"/>
    </fileset>
</delete>

但是,如果您使用 filesetincludesexcludes 属性,comma-delimited 列表将实际起作用;

<delete includeemptydirs="true" followsymlinks="false">
    <fileset
        dir="${apache.base}"
        includes="**/*"
        excludes="**/FOO.xml,**/BAR.xml"
    />
</delete>