【问题标题】:Jenkins Maven release fails due to log files from unit tests由于单元测试的日志文件,Jenkins Maven 发布失败
【发布时间】:2016-08-02 14:04:12
【问题描述】:

不幸的是,我可能有两个问题,或者更确切地说,解决方案可能有两种不同的方式。我在几个我单元测试的类中设置了 log4j 记录器。当我运行mvn clean install 时,它显然会运行这些测试并反过来创建一个日志文件(该文件通常是空的,因为没有记录任何令人兴奋的事情)。这不一定是个问题,只是当我做Perform Maven Release 时 Jenkins 似乎不喜欢这个。它对工作区进行本地更改大喊大叫,并在声明失败之前引用日志文件。

我知道它是单元测试,因为如果我将它们更改为集成测试或忽略它们,一切正常。但我想要一个解决方案而不是解决方法。

Jenkins 中是否有配置可以让我解决这个问题?

或者是否有模拟或忽略单元测试日志记录的策略?

我不一定想忽略它们,但它会干扰创建发布。

【问题讨论】:

    标签: java maven unit-testing logging jenkins


    【解决方案1】:

    我不太了解Perform Maven Release 的作用,但我可以提出几个解决方案:

    1. 从源代码存储库中删除日志文件(因为每次运行都会重新生成日志文件,我认为它不应该驻留在源代码存储库中)。
    2. 将有问题的日志文件的路径添加到版本控制忽略的文件列表中(例如,git 使用名为 gitignore 的文件 - https://git-scm.com/docs/gitignore

    希望这会有所帮助!

    【讨论】:

    • Amit 列出了适用于我们的 #2 解决方案 - 在我们的商店中,我们使用 SVN,因此我们将这些文件添加到我们的 .svn-ignore 中,mvn release:prepare 将成功运行。
    • 太棒了。将在下一个版本中确定这是否有效,但我在工作列表的工作区中没有看到它。好主意。
    【解决方案2】:

    Amit 有一些好主意,我会提出更多建议:

    • 使用slf4j 登录您的项目,不要在测试阶段绑定日志实现
    • 再好一点,在测试阶段绑定slf4j-test,它会记录到内存中。然后,您还可以针对您的日志记录编写测试,以确保它在您期望的时候发生。

    【讨论】:

      猜你喜欢
      • 2012-11-18
      • 2017-05-21
      • 2015-04-25
      • 2017-03-20
      • 2020-01-16
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多