如何解决执行mvn sonar:sonar时sonar-maven-plugin插件执行失败问题?
你在执行以下Maven Sonar扫描命令时遇到了上传失败的问题:
mvn sonar:sonar -Dsonar.host.url= http://localhost:9000 -Dsonar.login=25d0a6a8a078272ad5c53e5c76fb15e6a4242736
使用的环境是JDK 1.8、SonarQube 7.4、Maven 3.5.4,Git Bash输出的报错核心信息如下:
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.2:sonar (default-cli) on project traccar: Failed to upload report - An error has occurred. Please contact your administrator
排查步骤&解决方法
先修正命令里的小错误:你命令中
-Dsonar.host.url= http://localhost:9000的=后面多了一个空格,这会导致URL解析异常,先把空格去掉,改成-Dsonar.host.url=http://localhost:9000,重新执行命令试试。确认SonarQube服务是否正常运行:打开浏览器访问
http://localhost:9000,看看能不能正常进入SonarQube的管理界面。如果服务没启动,找到SonarQube的安装目录,执行启动脚本(Windows是StartSonar.bat,Linux是./sonar.sh start),等服务完全启动后再重试扫描。验证Sonar登录令牌的有效性:你使用的登录令牌
25d0a6a8a078272ad5c53e5c76fb15e6a4242736,需要登录SonarQube后台,进入个人设置的「安全」板块,查看这个令牌是否存在、是否过期或被撤销。如果有问题,重新生成一个新的令牌替换到命令中。检查Maven Sonar插件版本兼容性:你当前用的sonar-maven-plugin是3.0.2,这个版本和SonarQube 7.4可能存在兼容性问题。推荐升级到和SonarQube 7.x兼容的插件版本,比如3.6.0.1398。可以直接在命令中指定插件版本执行:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=25d0a6a8a078272ad5c53e5c76fb15e6a4242736
或者在项目的pom.xml中配置插件版本:
<build> <plugins> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.6.0.1398</version> </plugin> </plugins> </build>
查看SonarQube服务器日志定位具体问题:如果上面的方法都没解决,去SonarQube安装目录下的
logs文件夹,查看web.log或ce.log文件,里面会记录服务器端的详细错误信息,比如权限不足、磁盘空间不够、报告格式异常等,根据日志信息再针对性处理。清理缓存后重新扫描:先执行
mvn clean清理项目的编译缓存,然后再重新执行Sonar扫描命令,避免旧的编译文件或缓存报告影响上传。
内容的提问来源于stack exchange,提问作者Giuseppe Boezio

