我正在尝试启用Sonarqube代码覆盖扫描。我在Eclipse中使用Maven项目并且已经设置了包括Sonar-scan在内的成功的Jenkins构建。
我已经成功地在当地使用Jacoco;我将Jacoco插件添加到pom.xml并通过jacoco:prepare-agent test jacoco:report
执行Run As-> Maven build...
。在那次调用之后,html报告位于target\site\jacoco
,它们似乎是正确的。
现在我需要让它在Jenkins中运行,但我不知道如何正确配置构建。目前,执行maven目标clean package -fae
和Invoke Standalone Sonar Analysis
构建步骤。
我发现sonar.jacoco.reportPath
需要设置,但我不知道在哪里设置它或在哪里调用jacoco:report
目标。另外我不确定是否需要将jacoco插件添加到jenkins,或者是否足以在maven项目中这样做。
非常感谢任何帮助,如果我能做些什么来改善我的问题,请告诉我。
答案 0 :(得分:1)
我终于成功了。如果有人有类似的问题,我在这里发布我的解决方案:
在Jenkins中,需要配置属性sonar.junit.reportsPath和sonar.jacoco.reportPath。詹金斯不需要执行额外的目标。
在项目pom.xml中,需要指定
<properties>
<jacoco-maven-plugin.version>0.7.4.201502262128</jacoco-maven-plugin.version>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<versionRange>(,0.7.4.201502262128]</versionRange>
<goals>
<goal>prepare-agent</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
必须执行目标prepare-agent
,但它首先会生成
资源路径位置类型插件执行未涵盖生命周期配置
要解决此问题,需要pluginManagement
阻止,因为它忽略了即将发生的问题。显而易见,使用versionRange
而不仅仅是version
,此特定版本也是必需的,以后的版本在这里不起作用。
答案 1 :(得分:0)