我有一个用 java 8 编写的项目。它对我来说有点复杂,并且非常依赖于 java 8。但是我也碰巧有一个 SonarQube 和一个 Jenkins 实例,它试图使用 java 11 来扫描项目。
使用java 11运行时:
mvn clean verify
我在项目中遇到 java 8 依赖错误,当我使用 java 8 时,我无法使用 sonarscanner。
我还无法找到并回答。
有什么解决办法或建议吗?
您可以使用 Jenkins 实例(使用 JDK8)构建项目并将其提交到在 JDK11 上运行的 SonarQube 实例。
使用 SonarQube 的推荐的扫描仪,您可以将项目配置为使用远程 SQ 服务器:
pom.xml
<properties>
<sonar.host.url>https://sonarqube.cldbz.net/</sonar.host.url>
<sonar.junit.reportsPath>target/surefire-reports</sonar.junit.reportsPath>
<sonar.jacoco.reportPath>target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.sources>src/main</sonar.sources>
</properties>
然后使用
mvn sonar:sonar
触发 Jenkins 上的扫描过程,这会将项目的扫描结果提交到 SQ 服务器。
您甚至可以在不进行
pom.xml
更改的情况下进行测试:
mvn clean verify sonar:sonar -Dsonar.login=<token> -Dsonar.host.url=https://<sonar-server>:<port>
.
因此,在为此创建解决方法后,我忘记了回答。那是我的事。
长话短说,我向实例安装了单独版本的 Java。重写管道,并根据 sonarqube 扫描仪使用 sh 块上的 env 更改填充终端。之后,我定义了一个清理脚本来恢复所有内容。到目前为止,我工作得非常有魅力。