SonarQube 7.0自定义规则开发Maven构建依赖失败求助
解决SonarQube 7.0自定义规则依赖与源码构建问题
Hey there! Let's break down your problem and fix it properly:
首先:版本匹配的必要性
SonarQube的sonar-plugin-api版本必须和你的SonarQube服务器版本完全一致——7.0的SonarQube就必须用7.0的plugin-api,不能用6.7的。这是因为每个SonarQube版本的API都会有兼容性调整,混用版本会导致插件无法正常加载或运行。
解决Maven依赖解析失败的问题
你遇到的Missing POM和DependencyResolutionException,是因为你单独构建sonar-plugin-api模块时,它依赖的sonar-check-api、sonar-duplications等模块都是SonarQube源码内部的组件,没有发布到公共Maven仓库,单独构建自然找不到这些依赖。这里有两种解决方案:
方案1:直接使用官方Maven仓库的预构建依赖(推荐给新手)
不需要自己编译源码,直接在你的自定义规则Maven项目中引入7.0版本的sonar-plugin-api依赖即可:
<dependency> <groupId>org.sonarsource.sonarqube</groupId> <artifactId>sonar-plugin-api</artifactId> <version>7.0</version> <scope>provided</scope> <!-- 因为SonarQube服务器会提供这个依赖 --> </dependency>
确保你的Maven配置(settings.xml或项目的pom.xml)包含Maven中央仓库,7.0版本的sonar-plugin-api已经同步到中央仓库,所以直接就能拉取到。
方案2:编译完整的SonarQube源码(仅当你需要修改API时)
如果确实需要基于SonarQube 7.0的源码做修改,必须先编译整个项目,再单独构建sonar-plugin-api:
- 克隆SonarQube 7.0的源码仓库:
git clone --branch 7.0 https://github.com/SonarSource/sonarqube.git - 进入源码根目录,执行全量构建(跳过测试加快速度):
这一步会把所有依赖的模块(比如cd sonarqube mvn clean install -DskipTestssonar-check-api)编译并安装到你的本地Maven仓库。 - 之后再进入
sonar-plugin-api模块单独构建:cd sonar-plugin-api mvn clean package
总结
作为新手,方案1是最省心的——直接用官方现成的依赖,不需要折腾源码编译。这样你就能专注于编写自定义规则,而不用处理依赖构建的问题。
内容的提问来源于stack exchange,提问作者W.celine
相关产品推荐
相关产品推荐

