如何配置Bamboo调用SonarQube分析基于Servlet的Java应用
基于Bamboo实现SonarQube代码分析的免费落地方案
不需要依赖付费的Sonar For Bamboo插件即可完成集成,以下是3种可直接落地的实现方案:
方案1:SonarScanner CLI 通用方案
该方案适配所有Java项目,包括Ant、无明确构建工具的老旧Servlet项目,不依赖任何上层构建工具
- 首先在运行构建任务的Bamboo Agent节点安装对应版本的SonarScanner CLI,配置好
SONAR_SCANNER_HOME环境变量,将CLI可执行文件路径加入系统PATH - 在你的Servlet项目根目录下新增
sonar-project.properties配置文件,写入基础配置:
# 项目唯一标识,SonarQube实例内全局唯一 sonar.projectKey=your-project-key sonar.projectName=你的项目展示名称 sonar.projectVersion=1.0 # 源代码目录,根据实际结构调整,老旧Servlet项目通常为src或者WebContent/WEB-INF/src sonar.sources=src # Java编译后的字节码目录,通常为target/classes或者WebContent/WEB-INF/classes sonar.java.binaries=target/classes # SonarQube服务访问地址 sonar.host.url=http://你的SonarQube服务地址 # SonarQube侧生成的项目访问令牌 sonar.login=你的SonarQube项目token
- 在Bamboo构建计划中新增「脚本」类型任务,放在编译打包任务之后,执行命令
sonar-scanner即可,注意脚本执行的工作目录要设置为项目根目录
方案2:Maven插件方案(适合使用Maven构建的项目)
无需单独安装SonarScanner,直接通过Maven目标触发分析:
- 不需要修改项目的
pom.xml文件,直接在Bamboo的原有Maven构建任务中新增目标,或者单独新增一个Maven任务 - 执行命令为:
mvn clean verify sonar:sonar -Dsonar.host.url=http://你的SonarQube服务地址 -Dsonar.login=你的SonarQube项目token - 如果项目配置了单元测试、覆盖率统计插件,该命令会自动抓取对应数据上传到SonarQube,无需额外配置
方案3:Gradle插件方案(适合使用Gradle构建的项目)
适配Gradle构建的项目,集成逻辑和Maven类似:
- 在项目
build.gradle中引入SonarQube官方插件 - 在Bamboo中新增Gradle任务,执行命令
gradle sonarqube -Dsonar.host.url=http://你的SonarQube服务地址 -Dsonar.login=你的SonarQube项目token即可
通用注意事项
- 需要确保Bamboo Agent节点和SonarQube服务之间的网络连通,没有防火墙/安全组策略限制
- SonarQube服务版本要和对应的SonarScanner、Maven/Gradle插件版本匹配,避免出现兼容报错
- SonarQube访问令牌建议配置在Bamboo的全局或项目级加密变量中,不要明文写在配置文件、脚本或构建命令中,避免密钥泄露
内容的提问来源于stack exchange,提问作者user3724615
相关产品推荐
相关产品推荐

