sonar-maven-plugin无法识别maven.compiler.release配置的JDK版本问题
Sonar-Maven-Plugin 与 Maven-Compiler-Plugin 的版本匹配行为分析
Sonar-Maven-Plugin的行为会因是否定义Maven-Compiler-Plugin而产生差异,我花了不少时间测试并寻找合适的配置方式。
先创建一个简单的Java Maven项目,简化后的pom.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>testing</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.release>17</maven.compiler.release> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
执行Sonar扫描命令:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:<version>:sonar -Dsonar.login=<token>
测试案例
案例1
sonarqube-maven-plugin版本:3.7.0.1746- pom.xml中定义了
maven.compiler.release - pom.xml中未定义
maven-compiler-plugin
结果:
Configured Java source version (sonar.java.source): 5
案例2
sonarqube-maven-plugin版本:3.7.0.1746- pom.xml中定义了
maven.compiler.release - pom.xml中定义了
maven.compiler.source - pom.xml中未定义
maven-compiler-plugin
结果:
Configured Java source version (sonar.java.source): 17
这说明Sonar插件只能从maven.compiler.source而非maven.compiler.release中获取Java版本信息。
案例3
sonarqube-maven-plugin版本:3.7.0.1746- pom.xml中定义了
maven.compiler.release - pom.xml中定义了
maven-compiler-plugin(版本3.8.1)
结果:
Configured Java source version (sonar.java.source): 6
目前不清楚为何定义Maven Compiler Plugin后,识别到的Java版本会发生变化。
案例4
sonarqube-maven-plugin版本:3.7.0.1746- pom.xml中定义了
maven.compiler.release - pom.xml中定义了
maven-compiler-plugin(版本3.10.1)
结果:
Configured Java source version (sonar.java.source): 7
目前不清楚为何使用不同版本的Maven Compiler Plugin后,识别到的Java版本会发生变化。
案例5
sonarqube-maven-plugin版本:3.9.1.2184- pom.xml中定义了
maven.compiler.release - pom.xml中未定义
maven-compiler-plugin
结果:
Configured Java source version (sonar.java.source): 5
升级Sonar Maven Plugin版本无法解决该问题。
内容的提问来源于stack exchange,提问作者Franz Wong
相关产品推荐
相关产品推荐

