Maven Jacoco-多模块项目。最简单的(集中的)设置是什么?
对于Maven多模块项目,我可以通过JacocoMaven插件报告代码覆盖率。我知道两种工作方法。我在下面描述的第一种方法。第二种方法是将Maven模块的所有jacoco结果附加到项目根目录中的1 jacoco.exec文件中 在这两种方法中,我都必须向每个模块的pom.xml中添加一个Jacoco插件。此外,我还必须为单元和/或集成测试插件添加几行代码。我知道我可以使用父pom将代码缩短一点 问题:我真的需要向每个模块的pom.xml文件中添加jacoco插件(以及修改的surefire/failsave插件)吗? 是否可以在项目根目录中仅在项目文件夹中定义一次jacoco插件 好的,详细说明方法1,这就是我使用的方法Maven Jacoco-多模块项目。最简单的(集中的)设置是什么?,maven,sonarqube,jacoco-maven-plugin,Maven,Sonarqube,Jacoco Maven Plugin,对于Maven多模块项目,我可以通过JacocoMaven插件报告代码覆盖率。我知道两种工作方法。我在下面描述的第一种方法。第二种方法是将Maven模块的所有jacoco结果附加到项目根目录中的1 jacoco.exec文件中 在这两种方法中,我都必须向每个模块的pom.xml中添加一个Jacoco插件。此外,我还必须为单元和/或集成测试插件添加几行代码。我知道我可以使用父pom将代码缩短一点 问题:我真的需要向每个模块的pom.xml文件中添加jacoco插件(以及修改的surefire/fa
sonar.sources=所有源文件
sonar.Exclutions=someFolders
sonar.java.coveragePlugin=jacoco
sonar.jacoco.reportpath=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>
org.jacoco
jacocomaven插件
${jacoco maven插件版本}
jacoco.agent.argLine
雅科科尼特酒店
配制剂
杰科科遗址
验证
报告
org.apache.maven.plugins
maven surefire插件
${surefire.plugin.version}
${jacoco.agent.argLine}
**/集成/***.java
**/*$*.*
org.apache.maven.plugins
maven故障保护插件
${failsafe.plugin.version}
${jacoco.agent.argLine}
${project.build.directory}/surefire报告
...
正如@Maxence-Lecointe所提到的,您可以将所有插件添加到父pom中。将插件放在节中而不是节中
扫描了许多解决方案后,我创建了一个简单但完整的Jacoco演示项目,显示:
- 多模块项目
- 单元测试(通过mvn清洁安装)
- 集成测试(通过mvn清洁安装-P集成测试)
- Jacoco-测试覆盖率(聚合数据文件和聚合报告)
- FindBugs-代码质量
享受这一天 在我看来,jacoco插件应该只出现在父pom中,有什么问题吗?您的项目存在一些依赖性问题。如果清理本地m2存储库并安装mvn,您将看到缺少两个依赖项。您的模块1在模块3中有错误的groupId声明。我在本地主机上有一个sonar实例,当我在您的项目上执行此命令时,我没有覆盖率(0.0%),您是否尝试在本地(或远程)sonarqube上部署覆盖率<代码>mvn清洁安装声纳:声纳-腰肌,全部测试很久以前,我有一个本地声纳(docker?)实例并将其修复。我在工作中也遇到过类似的问题,但我忘了如何解决。不,不是docker。只是Windows上的一个实例。在maven日志中,您将看到跳过了测试工具(或如何调用它)。这可能会给出“为什么”的线索。sonar在一个配置文件中查找源。看看web上项目插件(单元和/或集成)的配置。
<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>