You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用SonarScanner对Java Maven仓库执行SonarQube扫描?

能否用SonarScanner扫描Java Maven仓库?

完全可以用SonarScanner替代Maven SonarQube插件来扫描Java Maven项目,只是得手动处理一些Maven自动帮你完成的配置——这也是官方文档更推荐Maven插件的原因:插件会自动读取pom.xml里的配置,省去不少手动配置的工作量。

配置步骤&踩坑要点

1. 先完成项目编译

SonarScanner需要读取Java编译后的字节码才能完成完整的代码分析(比如复杂度、覆盖率等指标),扫描前必须先执行Maven编译命令:

mvn clean compile

如果需要分析测试代码和覆盖率,还要额外编译测试代码:

mvn clean test-compile

2. 配置SonarScanner参数

可以选择在项目根目录创建sonar-project.properties文件,或者在执行扫描时通过命令行直接传递参数,核心配置项如下:

# 项目核心标识(SonarQube内唯一)
sonar.projectKey=你的项目唯一key
sonar.projectName=项目显示名称
sonar.projectVersion=1.0

# 源码与编译产物路径(Maven默认路径,若pom自定义了输出路径需同步修改)
sonar.sources=src/main/java,src/main/resources
sonar.java.binaries=target/classes
sonar.java.test.binaries=target/test-classes
sonar.tests=src/test/java

# SonarQube服务器配置
sonar.host.url=你的SonarQube服务器地址
sonar.login=你的SonarQube令牌(优先用令牌而非账号密码)

3. 执行扫描命令

在项目根目录运行SonarScanner即可启动扫描:

sonar-scanner

如果不想维护配置文件,也可以直接通过命令行传递所有参数:

sonar-scanner -Dsonar.projectKey=xxx -Dsonar.host.url=xxx -Dsonar.login=xxx -Dsonar.java.binaries=target/classes ...

常见配置问题解决

  • 编译产物找不到:检查sonar.java.binaries是否指向Maven默认的target/classes目录,若pom.xml中自定义了编译输出路径,需同步修改该参数。
  • 测试代码未被分析:确认sonar.tests和sonar.java.test.binaries配置正确,且已经执行过mvn test-compile命令。
  • 依赖漏洞分析缺失:SonarScanner不会自动读取Maven依赖,若需要分析依赖漏洞,需先在SonarQube安装对应的插件(如Dependency-Check),或手动导出Maven依赖清单供SonarScanner识别。

内容的提问来源于stack exchange,提问作者Alexius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:42:22