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

How to configure multi-module Maven + Sonar + JaCoCo to give merged coverage report?

1个答案

1

To configure SonarQube and JaCoCo for a Maven project with multiple modules to generate a merged code coverage report, follow these steps to integrate the tools effectively. Here are the detailed instructions:

1. Add JaCoCo Plugin to Parent POM

First, configure the JaCoCo plugin in the parent POM file of the project. This ensures that all child modules inherit this configuration.

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> <!-- Output directory, can be customized --> <outputDirectory>${project.build.directory}/coverage-reports</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </pluginManagement> </build> </project>

2. Activate JaCoCo in Each Child Module

Ensure that each child module's POM file inherits from the parent POM, allowing customization of required configuration as needed; in most cases, the default inheritance is sufficient.

3. Configure SonarQube

Next, configure SonarQube to analyze coverage reports by adding the Sonar plugin configuration in the parent POM.

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>

Also, ensure SonarQube can locate JaCoCo-generated reports:

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. Run Maven Build and Analysis

Execute the following command to initiate the Maven build and SonarQube analysis:

bash
mvn clean verify sonar:sonar

This command triggers the JaCoCo and SonarQube plugins, first generating coverage data, then analyzing it with SonarQube.

5. Check Results

View the project's coverage report on the SonarQube web interface to confirm that coverage data is merged and displayed as expected.

This process provides a reliable foundation for configuring JaCoCo and SonarQube in multi-module Maven projects to generate merged coverage reports. The configuration ensures precise code coverage tracking and is highly suitable for continuous integration environments.

2024年8月15日 18:39 回复

你的答案