Maven Jacoco - 多模块项目。最简单(集中式?)的设置是什么?
Maven Jacoco - multi module project. What is the easiest (centralized?) setup?
对于 Maven 多模块项目,我可以通过 Jacoco Maven 插件报告代码覆盖率。我知道有两种工作方法。我在下面描述的第一种方法。第二种方法是将 Maven 模块的所有 jacoco 结果附加到项目根目录中的 1 jacoco.exec 文件中。
在这两种方法中,我都必须向每个模块的 pom.xml 添加一个 Jacoco 插件。我还必须向单元 and/or 集成测试插件添加几行。我知道我可以使用 parent-pom 来稍微缩短代码。
问题:我真的需要将 jacoco 插件(和修改后的 surefire/failsave 插件)添加到每个模块的 pom.xml 文件中吗?
是否可以在项目文件夹中仅在项目根目录中定义一次 jacoco 插件?
好的,详细说明方法1,这就是我使用的。
- 项目根目录中的 Sonar 项目属性文件。
sonar.projectKey=projectKey
sonar.sources=all source files
sonar.exclusions=someFolders
sonar.java.coveragePlugin=jacoco
sonar.jacoco.reportPaths=module1/target/jacoco.exec,module2/target/jacoco.exsonar.projectName=projectName
sonar.java.binaries=*/target/classes
Maven 的核心部分是:
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin-version}</version>
<configuration>
<propertyName>jacoco.agent.argLine</propertyName>
</configuration>
<executions>
<execution>
<id>jacoco-init</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>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.plugin.version}</version>
<configuration>
<argLine>${jacoco.agent.argLine}</argLine>
<excludes>
<exclude>**/integration/**/*.java</exclude>
<exclude>**/*$*.*</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${failsafe.plugin.version}</version>
<configuration>
<argLine>${jacoco.agent.argLine}</argLine>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
</configuration>
<executions>
...
</executions>
</plugin>
</plugins>
如@Maxence Lecointe 所述,您只需将所有插件添加到父 pom.xml 即可。将插件放在 部分而不是 部分。
扫描了许多解决方案后,我创建了一个简单但完整的 Jacoco 演示项目,显示:
- 多模块项目
- 单元测试(通过 mvn clean install)
- 集成测试(通过 mvn clean install -P 集成测试)
- Jacoco - 测试覆盖率(聚合数据文件和聚合报告)
- FindBugs - 代码质量
对于 Maven 多模块项目,我可以通过 Jacoco Maven 插件报告代码覆盖率。我知道有两种工作方法。我在下面描述的第一种方法。第二种方法是将 Maven 模块的所有 jacoco 结果附加到项目根目录中的 1 jacoco.exec 文件中。
在这两种方法中,我都必须向每个模块的 pom.xml 添加一个 Jacoco 插件。我还必须向单元 and/or 集成测试插件添加几行。我知道我可以使用 parent-pom 来稍微缩短代码。
问题:我真的需要将 jacoco 插件(和修改后的 surefire/failsave 插件)添加到每个模块的 pom.xml 文件中吗? 是否可以在项目文件夹中仅在项目根目录中定义一次 jacoco 插件?
好的,详细说明方法1,这就是我使用的。
- 项目根目录中的 Sonar 项目属性文件。
sonar.projectKey=projectKey
sonar.sources=all source files
sonar.exclusions=someFolders
sonar.java.coveragePlugin=jacoco
sonar.jacoco.reportPaths=module1/target/jacoco.exec,module2/target/jacoco.exsonar.projectName=projectName
sonar.java.binaries=*/target/classes
Maven 的核心部分是:
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin-version}</version>
<configuration>
<propertyName>jacoco.agent.argLine</propertyName>
</configuration>
<executions>
<execution>
<id>jacoco-init</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>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.plugin.version}</version>
<configuration>
<argLine>${jacoco.agent.argLine}</argLine>
<excludes>
<exclude>**/integration/**/*.java</exclude>
<exclude>**/*$*.*</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${failsafe.plugin.version}</version>
<configuration>
<argLine>${jacoco.agent.argLine}</argLine>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
</configuration>
<executions>
...
</executions>
</plugin>
</plugins>
如@Maxence Lecointe 所述,您只需将所有插件添加到父 pom.xml 即可。将插件放在
扫描了许多解决方案后,我创建了一个简单但完整的 Jacoco 演示项目,显示:
- 多模块项目
- 单元测试(通过 mvn clean install)
- 集成测试(通过 mvn clean install -P 集成测试)
- Jacoco - 测试覆盖率(聚合数据文件和聚合报告)
- FindBugs - 代码质量