【问题标题】:how to clean jacoco.exec after running integration tests in a multi-module project在多模块项目中运行集成测试后如何清理 jacoco.exec
【发布时间】:2015-08-26 18:08:23
【问题描述】:

我有一个多模块 Maven 项目,它使用 Sonar Maven 运行器进行分析,并使用 Jacoco 完成覆盖。对于我们的集成测试,我们希望看到所有模块的覆盖率(因为它们毕竟是集成测试)。 因此,我们将 jacoco-it.exec 文件配置为位于 ${user.dir} 中,并将 appendproperty 设置为 true。这样,所有模块都将它们的信息附加到相同的位置,并且覆盖范围是针对所有模块计算的。

但由于append 为真,该文件在下一次运行时仍会存在,因为它没有放置在 maven 清理的目录中。这会导致错误的覆盖率报告。

在声纳运行后清理此文件的最佳方法是什么?理想情况下,我想在与我们的 jacoco/sonar 配置相同的 pom 配置文件中进行配置,这样其他项目就不需要记住在 Jenkins 或其他任何地方设置一个干净的步骤。 sonar/jacoco 配置在公司范围的父 pom 文件中。

【问题讨论】:

    标签: sonarqube


    【解决方案1】:

    由于您使用的是 Maven,您可以尝试使用 maven-antrun-plugin 删除文件。

    我不知道您如何运行 Sonar Maven,但您可以将 maven-antrun-plugin 任务绑定到 Sonar Maven Runner 绑定到的阶段之后的一个阶段(并且您将自动删除文件并且每次运行结束),或者您可以从命令行调用 maven-antrun-plugin。

    【讨论】:

    • 感谢您的回答!我最终求助于使用 exec 插件:mvn clean install; mvn sonar:sonar exec:exec。但那是平台依赖,我找不到将它绑定到某个阶段的方法,恕我直言,你不能将 mojo 绑定到一个阶段?那么如何将 antrun 绑定到一个阶段呢?
    • 恕我直言,你不能绑定到一个阶段,因为它总是在每个模块之后执行,在这个用例中,你只希望在所有模块都运行后删除文件
    猜你喜欢
    • 2017-01-29
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多