【问题标题】:Is it possible to enable -fae/--fail-at-end by default?是否可以默认启用 -fae/--fail-at-end ?
【发布时间】:2012-08-30 21:22:49
【问题描述】:

我知道我可以使用 -fae/--fail-at-end 命令行选项指示 Maven 在失败后继续运行。有没有办法将此行为设置为给定模块的默认行为?

一些背景:
我正在从 Ant 构建迁移到基于 Maven 的构建,即使单元测试失败,团队中的其他开发人员也习惯于完成构建。对于大约 200 个模块的产品,构建需要相当长的时间,如果开发人员可以从一开始就看到 所有 失败的测试,而不必记住添加 -fae 选项,那将是理想的选择.

通过阅读 Maven 文档,我觉得答案是一个响亮的“不”,但我只是想覆盖我的基础并确保没有某种未记录的方式来做到这一点......

谢谢!

【问题讨论】:

    标签: maven


    【解决方案1】:

    查看 Maven 源代码后,我可以确认默认情况下无法配置。

    在 Maven 跟踪器上打开了一个现有问题:http://jira.codehaus.org/browse/MNG-5342(如果您仍然想要它,请投票 - 只是注意到您确实打开了它,因此您无法对其进行投票;)...

    问候,

    【讨论】:

      【解决方案2】:

      要跳过测试失败,您可以使用属性maven.test.failure.ignore。当然,如果你有父和子 pom,你可以在每个模块中使用这个属性。

      【讨论】:

      • 谢谢,这很有用,但是失败的测试会被错误地标记为成功。这与我更喜欢的 -fae 的行为不同。
      • Maven 在标准配置中使用surefire插件进行测试——如果测试失败以及测试内容,它会生成包含信息的XML文件。大多数 CI 工具可以解析可靠的 XML 以在漂亮的图表上呈现这些统计数据并显示有多少测试失败。
      • 是的,这对 CI 很有用(并且对我们的 Hudson CI 构建很有用),但对本地开发人员构建完全没有用。如果他们设置了 maven.test.feailure.ignore,运行构建(单元测试失败),(错误地)确定构建成功,然后他们会将损坏的测试提交到源代码控制并破坏 CI 构建。我想唯一合理的选择是强制用户在命令行上使用 -fae 运行他们的构建,或者提供提供该选项的 .bat 或 .cmd 脚本。
      • 我知道你的意思。但是您想与以前的行为保持一致——以前的方法是否包括在最后列出所有失败的测试?如果不是,它类似于 maven.test.failure.ignore。而且我记得“失败的测试然后被错误地标记为成功”这是不正确的 - 模块的构建被标记为成功但没有失败的测试。
      • 您的方法似乎存在一个冲突:每次提交之前都需要本地构建,但您并不关心失败的测试。我喜欢使用 CI 服务器来运行快速检查构建的方法 - 因为开发人员的时间很宝贵;) 以及您可以在 IDE 中看到的编译错误(我非常不喜欢 IDE 中的红色错误和略带黄色的错误)所以在 CI 上您可以看到什么测试失败。此外,当其他开发人员更新源时,他们可以在 CI 上看到最新的安全版本。
      猜你喜欢
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2016-09-11
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多