当前位置: 首页 > 知识库问答 >
问题:

用于多模块项目的Maven Jacoco配置[重复]

易成天
2023-03-14

我试图使用maven中的jacoco插件为我正在进行的一个多模块项目生成代码覆盖率报告。

我在我的父母pom中添加了以下内容。构建标记中的xml。

      <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.8-SNAPSHOT</version>
            <configuration>
                <output>file</output>
                <append>true</append>
            </configuration>
            <executions>
                <execution>
                    <id>jacoco-initialize</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-site</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <argLine>${argLine}</argLine>
            </configuration>
        </plugin>

在运行mvn verify时,会在“project root\module\target\site\jacoco\”处为每个模块生成相应的jacoco报告

是否可以在项目根目录下生成包含每个模块的测试覆盖率详细信息的综合jacoco报告?

请建议合并各个模块报告的最佳方式。

共有2个答案

蓬弘
2023-03-14

除了Markdsievers详细回答中建议的步骤,我必须在localhost:9000中设置sonarqube-5.3(支持jdk 7)

设置声纳qube

并使用mvn包生成jacoco。exec文件。然后mvn sonar:sonar在sonar仪表板中生成报告。

那绪
2023-03-14

当然是!

我花了一段时间和一些资料来编造这个模式,但效果很好。

对于多模块Maven项目:

ROOT
|--LIB-1
|--LIB-2

LIB项目都有自己的单元测试

ROOTpom.xml

<!- properties-->
<jacoco.reportPath>${project.basedir}/../target/jacoco.exec</jacoco.reportPath>

<!-- build/plugins (not build/pluginManagement/plugins!) -->
<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.6.201602180812</version>
    <executions>
        <execution>
            <id>agent-for-ut</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
            <configuration>
                <append>true</append>
                <destFile>${jacoco.reportPath}</destFile>
            </configuration>
        </execution>
    </executions>
</plugin>

LIBprojectspom。xml将继承JaCoCo插件的执行,因此只需在Surefire插件中连接argline。

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
        <argLine>${argLine}</argLine>
    </configuration>
 </plugin>

对于通过Sonar报告的JaCoCo的汇总集成测试和单元测试,我有一个扩展的答案,您可以在这里看到我的详细答案。

 类似资料:
  • 我正在学习本教程https://spring.io/guides/gs/multi-module/#scratch 在根目录中,我创建了3个目录:moduleA、moduleB和moduleC 我运行了

  • 我有一个问题,为我的多模块maven项目正确设置Spring启动。 有一个模块“api”使用另一个模块“core”。Api有一个应用程序。包含spring的属性文件。邮政主机=xxx。根据Spring Boot文档,这为您提供了JavaMailSender接口的默认实现,可以自动连接。 然而,负责发送电子邮件的类驻留在“核心”包中。当我尝试构建该模块时,构建失败,因为找不到JavaMailSend

  • 问题内容: 我正在研究一个多模块Maven项目,其结构如下: war模块取决于jar模块,并将打包后将jar工件添加到webapp的lib目录中。 war模块和jar模块都使用Apache log4j进行日志记录,并共享相同的log4j配置文件(log4j.xml),该文件当前位于jar模块项目中。并且此log4j.xml将打包到jar- module.jar文件中,但是,我想将其放入war包中而

  • 问题内容: 我最近开始使用Gradle并替换了我现有的基于Maven的项目。过去我在使用Maven处理多模块构建时遇到很多问题。在处理多模块水龙头时,Gradle呼吸了新鲜空气,但还不是很完美。 我的项目有以下文件夹布局: 我遇到的问题是“ EnterpriseApp1”和“ ClientApplication”都依赖于CommonLib项目。我不知道如何配置“ EnterpriseApp1”构建

  • 现在,我将应用程序部署在外部Tomcat9.x服务器上,并且希望每个Spring Boot应用程序都有外部属性文件。 属性文件应该外部化到文件系统上的Tomcat之外,如下所示: 因此,根据我的理解,“spring.config.location”不是一个选项,因为我只能为每个Tomcat实例指定位置和一个属性文件。

  • 我有一个多模块java项目,我想在其中创建jar(bin、source、javadoc),但我很难从子项目配置中的子项目中获取变量。 这是我在根项目中的build.gradle文件: 这就是建筑。gradle文件子项目之一: 当我想运行构建脚本时,我得到了以下异常: 无法获取类型为org的对象的未知属性“mainClassName”。格雷德尔。应用程序编程接口。JAVA档案内部的默认舱单。 在子流