构建Sonar阶段执行sonar-scanner报错要求配置sonar.java.binaries属性
问题原因
该报错是Java项目执行Sonar静态分析时的必填参数缺失问题:SonarJava插件需要读取项目编译后的.class字节码文件完成部分规则检测,你未配置sonar.java.binaries参数指向类文件存放路径。
解决方法
两种配置方式二选一即可:
方式1:修改sonar-project.properties配置文件
在你的项目根目录的sonar-project.properties文件中新增如下配置,路径按你项目实际编译输出目录调整:
# Maven项目默认编译路径示例 sonar.java.binaries=target/classes # Gradle项目默认编译路径示例 # sonar.java.binaries=build/classes/java/main
修改配置后直接执行原有扫描命令即可:
/var/lib/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Sonarqube_scanner/bin/sonar-scanner -Dproject.settings=sonar-project.properties
方式2:直接在执行命令中追加参数
不需要修改配置文件,直接在原有扫描命令后加-Dsonar.java.binaries参数指定路径即可,示例如下(替换为你实际的class存放路径):
# Maven项目示例 /var/lib/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Sonarqube_scanner/bin/sonar-scanner -Dproject.settings=sonar-project.properties -Dsonar.java.binaries=target/classes
Jenkins环境注意事项
- 确保Sonar扫描阶段排在项目编译阶段之后执行,必须先完成编译生成class文件再执行扫描,否则即使配置了路径也会找不到对应文件
- 如果是多模块项目,需要指定所有模块的class路径,多个路径用英文逗号分隔即可,示例:
sonar.java.binaries=module-a/target/classes,module-b/target/classes - 路径排查阶段可以在执行命令后加
-X参数输出调试日志,确认配置的路径是否被正确读取
内容的提问来源于stack exchange,提问作者Mohan
相关产品推荐
相关产品推荐

