【问题标题】:Ant Successful even when Ant Task fails即使 Ant 任务失败,Ant 也成功
【发布时间】:2012-09-13 10:58:21
【问题描述】:

我必须缺少一个简单的设置,所以请原谅我,但我注意到有两次我的不良 ant 任务不会导致构建失败。例如:

  1. 源文件不存在时的 Ant 复制...构建成功

  2. Ant 解压缩,当任务报告“无法写入文件”或类似消息时...构建成功

  3. Ant 执行错误,语法无效...构建成功

如何保证所有 ant 任务错误都会导致构建失败?

【问题讨论】:

  • 许多任务都有参数来打开/关闭“failonerror”,因为有时您不希望任务使构建失败。检查文档并仔细查看参数表。
  • @coolcfan,除非另有指示,否则它应该总是失败,EXEC 默认为 false 是一个错误。我认为我遇到的 COPY 和 UNZIP 问题与尝试直接运行 ant-launcher.jar 有关。 :(
  • 我添加了 failonerror="true" 并且 Ant 仍在继续构建。这个程序中的“fail early fail often”在哪里?

标签: ant


【解决方案1】:
  • <EXEC> 任务默认不会失败。您需要使用 failonerror="true"

  • 启用此功能
  • Ant <COPY> 任务的失败取决于使用的资源集合类型。如果您使用filesetpatternset,则所有丢失的文件都将静默忽略。您只能通过使用filelist 类型或使用参数化的“文件”属性来强制失败。

    因此,您要使用的是:

    <copy todir="my_dir" file="foo" />
    
    <copy todir="my_dir" flatten="true">
      <filelist dir="" files="foo" />
    </copy>
    
    <copy todir="my_dir" flatten="true">
      <filelist dir="">
         <file name="foo" />
         <file name="bar" />
         <file name="zed" />
      </filelist>
    </copy>
    

【讨论】:

    【解决方案2】:

    您是否尝试过以下操作:

    <copy todir="your/path/details" failonerror="true">
    </copy>
    
    <zip destfile="your/path/details" whenempty="fail">
    </zip>
    
    <exec executable="your/path/details" failonerror="true">
    </exec>
    

    【讨论】:

    • 复制默认为failonerror="true",即使手动设置也不会失败。
    • 复制任务不起作用,因为 failureOnError 默认设置为 true。
    猜你喜欢
    • 2011-09-15
    • 2014-03-09
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 2019-10-14
    • 1970-01-01
    相关资源
    最近更新 更多