java - 使用 maven 升级到 Java 11、sonarqube、jacoco 导致错误

标签 java maven sonarqube jacoco

将 Java 从 8 升级到 11 后。sonar:sonar 无法工作并出现异常 最后。

Java 1.8 在 Sonarqube 7.7 上运行良好,现在在 java 11 和 sonarqube 7.8 上却出现异常失败

[错误] 无法在项目 xxxx 上执行目标 org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar (default-cli):无法读取 ....\target\jacoco。 exec 确定 JaCoCo 二进制格式。: EOFException -> [帮助 1]

对 java 11 使用以下属性

<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
<sonar.sources>src/main</sonar.sources>
<sonar.tests>src/test</sonar.tests>     
<runSuite>**/*Test.class</runSuite>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis
<sonar.jacoco.reportPaths>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPaths>
<sonar.language>java</sonar.language>

下面使用 jacoco 的插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <release>${java.version}</release>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.2</version>
    <configuration>
        <argLine>--illegal-access=permit</argLine>
        <includes>
            <include>${runSuite}</include>
        </includes>
        <forkCount>0</forkCount>
    </configuration>
</plugin>
<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.4</version>
    <configuration>
        <destFile>${sonar.jacoco.reportPaths}</destFile>
        <append>true</append>
    </configuration>
    <executions>
        <execution>
            <id>agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我是否缺少 pom 文件中使用 jacoco 运行 sonarqube 的任何配置

最佳答案

删除 sonar.coverage.jacoco.xmlReportPathsmaven-surefire-plugin 即可获得代码覆盖率。问题已修复。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.2</version>
    <configuration>
        <argLine>--illegal-access=permit</argLine>
        <includes>
            <include>${runSuite}</include>
        </includes>
        <forkCount>0</forkCount>
    </configuration>
</plugin>

有用的链接:

https://52.213.100.93/browse/MMF-1651

https://github.com/SonarSource/sonar-scanning-examples/tree/master/sonarqube-scanner-maven

关于java - 使用 maven 升级到 Java 11、sonarqube、jacoco 导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57301580/

相关文章:

java - 如何递归地重复数组中的元素n次?

maven - 使用 maven-assembly-plugin 构建 ZIP 存档时如何禁用压缩

java - 如何在Android SDK(在Travis中)上获取tools/source.properties?

java - 如何解决 SonarQube "needlessly boxes a boolean constant"中的主要问题

javascript - SonarQube 扫描仪在 javascript 上很无聊

JavaMail API - 读取大型 outlook 邮箱 (>3000) 的邮件内容

java - Java Swing中如何显示变化的文本(即显示时间随着秒数的变化)

java - 无法呈现请求 [/countries] 的错误页面,因为响应已提交。因此,响应可能有错误的状态代码

java - 错误的maven编译错误(在eclipse中工作)

sonarqube - 为什么 Sonar 需要二进制文件(sonar.binaries)