Ant:如果目录不存在,我该如何忽略构建错误?

17

我正在使用Ant 1.8.1。 如果目录不存在,如何忽略以下构建错误? 我收到的错误是

BUILD FAILED
/Users/davea/myco2-myco/build.xml:211: Directory does not exist: /Users/davea/myco2-myco/${mycousa.test.root}

问题所在的行是下面子句中的删除指令。虽然"erroronmissingdir"属性本应解决问题,但我想并没有...

    <delete>
            <fileset dir="${mycousa.test.root}" erroronmissingdir="false">
                    <include name="suite.html" />
            </fileset>
    </delete>

请告诉我如何修改上述代码,以便即使目录不存在也不会出现错误。

谢谢 - Dave

2个回答

21

我认为问题在于你处理的错误条件是在创建FileSet时而不是删除本身。请查看删除任务中的failonerror指令:

<delete failonerror="false">
            <fileset dir="${mycousa.test.root}" erroronmissingdir="false">
                    <include name="suite.html" />
            </fileset>
</delete>

参考资料:http://ant.apache.org/manual/Tasks/delete.html


是的,但如果 erroronmissingdir 是 FileSet 的话,应该是"missing/empty",然后删除操作不会执行任何动作(或者可能会抱怨一个空的文件集,但不会出现实际目录路径的错误)。 - BeeOnRope
1
以下答案涵盖了这一点:在Ant 1.8.1中修复了一个错误。因此,从Ant 1.8.1开始,erroronmissingdir="false"可以正常工作,无需failonerror="false",后者还会产生负面影响,阻碍_有效_的错误(例如用户没有对文件的写入权限)。 - Andrei LED

7

这个(将Ant更新到1.8.1+)应该是被接受的答案:与上面建议的<delete failonerror="false">更改不同,这个解决方案没有忽略有效失败的副作用(例如,如果目录存在但用户无权从中删除文件)。 - Andrei LED

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接