如何在 Jenkins 中使用 SonarQube 和 Maven 配置 Jacoco
How to configure Jacoco with SonarQube and Maven in Jenkins
我正在尝试启用 Sonarqube 代码覆盖扫描。我在 Eclipse 中从事 Maven 项目,并且已经成功设置了 Jenkins-build,包括 Sonar-scan。
我已经在本地成功使用Jacoco;我将 Jacoco 插件添加到 pom.xml 并通过 Run As-> Maven build...
执行了 jacoco:prepare-agent test jacoco:report
。在那次通话之后,html 报告位于 target\site\jacoco
中,它们似乎是正确的。
现在我需要让它在 Jenkins 中工作,但我不知道如何正确配置构建。当前执行 Maven 目标 clean package -fae
和 Invoke Standalone Sonar Analysis
构建步骤。
我发现 sonar.jacoco.reportPath
确实需要设置,但我不知道在哪里设置它或在哪里调用 jacoco:report
目标。另外我不确定我是否也需要将 jacoco 插件添加到 jenkins,或者在 maven 项目中这样做是否足够。
非常感谢任何帮助,如果我能做些什么来改进我的问题,也请告诉我。
是的,您需要在 jenkins 中安装和配置 jacoco 插件。
Foolow 这个 link 解释了它
我终于成功了。如果有人有类似的问题,我会在这里发布我的解决方案:
在 Jenkins 中,需要配置属性 sonar.junit.reportsPath 和 sonar.jacoco.reportPath。无需在 Jenkins 中执行额外的目标。
在项目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
必须执行,但它首先生成一个
Resource Path Location Type Plugin execution not covered by lifecycle configuration
为了解决这个问题,需要 pluginManagement
块,因为它忽略了即将发生的问题。这里很明显使用versionRange
而不仅仅是version
,而且这个特定版本是必需的,更高版本在这里不起作用。
我正在尝试启用 Sonarqube 代码覆盖扫描。我在 Eclipse 中从事 Maven 项目,并且已经成功设置了 Jenkins-build,包括 Sonar-scan。
我已经在本地成功使用Jacoco;我将 Jacoco 插件添加到 pom.xml 并通过 Run As-> Maven build...
执行了 jacoco:prepare-agent test jacoco:report
。在那次通话之后,html 报告位于 target\site\jacoco
中,它们似乎是正确的。
现在我需要让它在 Jenkins 中工作,但我不知道如何正确配置构建。当前执行 Maven 目标 clean package -fae
和 Invoke Standalone Sonar Analysis
构建步骤。
我发现 sonar.jacoco.reportPath
确实需要设置,但我不知道在哪里设置它或在哪里调用 jacoco:report
目标。另外我不确定我是否也需要将 jacoco 插件添加到 jenkins,或者在 maven 项目中这样做是否足够。
非常感谢任何帮助,如果我能做些什么来改进我的问题,也请告诉我。
是的,您需要在 jenkins 中安装和配置 jacoco 插件。
Foolow 这个 link 解释了它
我终于成功了。如果有人有类似的问题,我会在这里发布我的解决方案:
在 Jenkins 中,需要配置属性 sonar.junit.reportsPath 和 sonar.jacoco.reportPath。无需在 Jenkins 中执行额外的目标。
在项目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
必须执行,但它首先生成一个
Resource Path Location Type Plugin execution not covered by lifecycle configuration
为了解决这个问题,需要 pluginManagement
块,因为它忽略了即将发生的问题。这里很明显使用versionRange
而不仅仅是version
,而且这个特定版本是必需的,更高版本在这里不起作用。