【问题标题】:ANT delete fails if fileset exclude is empty如果文件集排除为空,则 ANT 删除失败
【发布时间】:2018-04-05 00:52:10
【问题描述】:

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

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

无论文件集的排除部分是否为空,有没有办法让它工作?

【问题讨论】:

    标签: xml jenkins ant fileset


    【解决方案1】:

    您的排除模式包含不正确的语法。使用嵌套的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 属性,逗号分隔的列表实际上会起作用;

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

    【讨论】:

    • 虽然这可能是一个单独的问题,但这并不能解决我的问题。如果 FOO.xml 或 BAR.xml 都不存在,上面的代码仍然会导致失败,并且我的代码可能存在语法错误,如果 FOO.xml 或 BAR.xml 存在,则可以正常运行。
    • @MrS 您能否编辑您的问题以包含您收到的确切错误消息?我无法重现您的问题。
    • 我已经添加了错误以及问题是通过 jenkins 发生的事实。我不确定这是否会有所帮助。
    • 我是个白痴,当我尝试实施您建议的更改时,我从未真正部署它们。他们工作。非常感谢。
    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2012-08-13
    • 2014-06-09
    • 1970-01-01
    相关资源
    最近更新 更多