Sonar 是一个常用的提高代码质量的扫描工具,其各种功能都是以插件的形式提供的,但是插件的安装地址有时会莫名被墙,这就需要用到离线安装。
离线安装只需要将插件的 jar 包放到 Sonar 程序目录的 extensions/plugins 目录中并重启应用即可。需要解决的 2 个问题是 Sonar 程序目录在哪里和下载链接是什么。
Sonar 程序目录比较好找,如果是 docker 镜像,查看其工作目录通常就是,比如 Docker Hub 上的官方镜像 sonarqube:latest 的安装位置就是 /opt/sonarqube
,那么放置 jar 包的位置就是 /opt/sonarqube/extensions/plugins
。
下载链接最简单的方式是在线安装之后查看报错日志,这样可以得到最新的版本号和最新的下载服务器。比如我现在安装 SonarJava 的后台日志中有这样一行
Caused by: org.sonar.api.utils.SonarException: Fail to download: https://binaries.sonarsource.com/Distribution/sonar-java-plugin/sonar-java-plugin-5.6.0.15032.jar (no proxy)
其中
https://binaries.sonarsource.com/Distribution/sonar-java-plugin/sonar-java-plugin-5.6.0.15032.jar
就是下载地址。
如果下载很慢,又不想费劲上传,只想多试几次,可以在服务器上使用 wget -c url
命令,其中 -c
参数是续传的意思,避免每次从头下载永远下载不到完整包的状况。如果在容器中使用 Sonar 最好是在另外一个目录下载完成之后再把 jar 包移动到 extensions/plugins 目录中,因为 Sonar 重启过程中会加载插件,不完整的 jar 包会让容器无法启动,万一下载了一半容器重启,再想恢复就要费一点点周折了。