乐闻世界logo
搜索文章和话题

如何配置多模块Maven+Sonar+JaCoCo以提供合并的覆盖报告?

1 个月前提问
1 个月前修改
浏览次数12

1个答案

1

要为一个包含多个模块的Maven项目配置SonarQube和JaCoCo来生成一个合并的代码覆盖率报告,我们需要遵循几个步骤来整合这些工具。以下是详细的步骤说明:

1. 在父POM中添加JaCoCo插件

首先,我们需要在项目的父POM文件中配置JaCoCo插件。这样,所有的子模块都会继承这个配置。

xml
<project> ... <properties> <jacoco.version>0.8.5</jacoco.version> </properties> <build> <pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>prepare-package</phase> <goals> <goal>report</goal> </goals> </execution> <execution> <id>post-unit-test</id> <phase>test</phase> <goals> <goal>report</goal> </goals> <configuration> <!-- 输出路径,可以自定义 --> <outputDirectory>${project.build.directory}/coverage-reports</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </pluginManagement> </build> </project>

2. 在每个子模块中激活JaCoCo

确保每个子模块的POM文件继承父POM,并且可以自定义需要的配置,大部分情况下默认继承即可。

3. 配置SonarQube

接下来,配置SonarQube来分析这些覆盖率报告。在父POM中,添加Sonar插件的配置。

xml
<properties> <sonar.host.url>YOUR_SONAR_URL</sonar.host.url> </properties> <build> <plugins> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.7.0.1746</version> </plugin> </plugins> </build>

并确保SonarQube能够找到JaCoCo生成的报告:

xml
<properties> <sonar.jacoco.reportPaths>${project.build.directory}/jacoco.exec</sonar.jacoco.reportPaths> <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> </properties>

4. 运行Maven构建并分析

运行以下命令来启动Maven构建并进行SonarQube分析:

bash
mvn clean verify sonar:sonar

这个命令会触发JaCoCo和SonarQube的插件,首先生成覆盖率数据,然后由SonarQube分析这些数据。

5. 检查结果

在SonarQube的Web界面上查看项目的覆盖率报告,确保覆盖率数据是按照预期合并显示的。

以上就是为一个多模块Maven项目配置JaCoCo和SonarQube以生成合并的覆盖率报告的基本步骤。这种配置确保了代码覆盖的精确度和可追踪性,非常适合在持续集成环境中使用。

2024年8月15日 18:39 回复

你的答案