Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Sonar maven jacoco代码覆盖多模块项目_Java_Maven_Code Coverage_Sonarqube_Jacoco - Fatal编程技术网

Java Sonar maven jacoco代码覆盖多模块项目

Java Sonar maven jacoco代码覆盖多模块项目,java,maven,code-coverage,sonarqube,jacoco,Java,Maven,Code Coverage,Sonarqube,Jacoco,我有一个多模块项目,其中包含一个父pom.xml和两个模块。jar和Project.war。所有测试用例都在Project.jar下。当我在父pom上运行mvn sonar.sonar goal时,jacoco.exec没有生成,代码覆盖率为空。我在父pom中具有以下属性 <properties> <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> <sonar.dy

我有一个多模块项目,其中包含一个父pom.xml和两个模块。jar和Project.war。所有测试用例都在Project.jar下。当我在父pom上运行mvn sonar.sonar goal时,jacoco.exec没有生成,代码覆盖率为空。我在父pom中具有以下属性

<properties>
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.jacoco.reportPath>${project.basedir}/target/jacoco.exec</sonar.jacoco.reportPath>
</properties>

杰科科
再利用报告
${project.basedir}/target/jacoco.exec

请帮忙。我使用的是Sonarqube 4.2

对于java插件的2.4版,您必须在运行SonarQube分析之前生成覆盖率报告。您可以看到关于如何执行此操作的此页面。

对于那些有类似问题的人,我解决此问题的方式略有不同(我从命令行运行此问题,而不是让Jenkins执行)。我对插件没有意见

所有这些设置都在父POM中定义。我正在使用以下版本:

<plugin.jacoco.version>0.7.2.201409121644</plugin.jacoco.version>

我不必对Surefire插件进行任何更改(就像我过去所做的那样)。

您能精确地确定您正在使用的java插件的版本吗?Sonar java plugin 2。4@benzonico-我已经在父pom和子jar和war pom中添加了jacoco插件,sonar.sources作为src/main用于多语言分析。有线索吗?请help@benzonico你能帮忙吗?我把我的java插件改为2.1,把jacoco插件添加到Sonarqube 4.2。现在,测试用例正在构建阶段和声纳目标中运行。我在用詹金斯。因此,测试结果会被运行测试用例的Sonar覆盖,而大多数测试都失败了。覆盖率值是错误的。我添加了sonar.dynamicAnalysis=true和sonar.reuseReports=true。通过更改插件版本修复了这个问题。sonar-surefire-plugin-2.1、sonar-squid-java-plugin-2.1、sonar-jacoco-plugin-2.1、sonar-checkstyle-plugin-2.1、sonar-build-stability-plugin-1.2、sonar-pmd-plugin-2.1、sonar-findbugs-plugin-2.1、sonar-java-plugin-2.1。有了这些版本,sonar会自动运行jacoco并创建报告。不过我建议在分析之前使用最新版本的插件并生成jacoco报告。
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>${plugin.jacoco.version}</version>
  <configuration>
    <destFile>${sonar.jacoco.reportPath}</destFile>
  </configuration>
  <executions>
    <execution>
      <id>agent</id>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
  </executions>
</plugin>
  <plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
  </plugin>
mvn clean test sonar:sonar