如何在Jenkins中使用SonarQube和Maven配置Jacoco

时间:2017-12-06 13:21:54

标签: eclipse jenkins sonarqube maven-3 jacoco

我正在尝试启用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 -faeInvoke Standalone Sonar Analysis构建步骤。  我发现sonar.jacoco.reportPath需要设置,但我不知道在哪里设置它或在哪里调用jacoco:report目标。另外我不确定是否需要将jacoco插件添加到jenkins,或者是否足以在maven项目中这样做。

非常感谢任何帮助,如果我能做些什么来改善我的问题,请告诉我。

2 个答案:

答案 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)

是的,您需要在jenkins中安装和配置jacoco插件。

愚弄这个解释它的链接

https://dzone.com/articles/jacoco-jenkins-plugin