问题描述
我正在尝试在我的 gradle build 中使用 sonarqube 扫描仪插件。由于证书问题,它既不能从互联网下载,也不能从其他插件通常放置在我们环境中的 Nexus 存储库下载。
- Gradle 版本:4.1.10
- 声纳插件 - 3.1
build.gradle
buildscript {
dependencies {
classpath files ("../../thirdparty/sonarqube-gradle-plugin-3.1")
}
}
apply plugin: "org.sonarqube"
在执行构建时,我收到错误:
行:12 * 出了什么问题:\n 评估根项目“自定义扩展”时出现问题。\n> 未找到 ID 为“org.sonarqube”的插件。
我做得对吗?如何解决?
解决方法
根据插件 documentation 和 flat directory resolver 的描述,我会这样做:
buildscript {
repositories {
flatDir {
dirs "../../thirdparty/sonarqube-gradle-plugin-3.1"
}
}
dependencies {
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1"
}
}
apply plugin: "org.sonarqube"
编辑:
sonarqube-gradle-plugin
依赖于 sonar-scanner-api
,两者都需要加载。使用 flatDir
解析器时,不会咨询 POM,并且无法自动发现此依赖项。在这种情况下,您还需要明确依赖 sonar-scanner-api
:
buildscript {
repositories {
flatDir {
dirs "thirdparty/sonarqube-gradle-plugin-3.1"
}
}
dependencies {
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1"
classpath "org.sonarsource.scanner.api:sonar-scanner-api:2.16.0.226"
}
}
您的第 3 方目录需要包含两个 jar;不需要 POM,因为无论如何都不会咨询它们:
$ find thirdparty/ -type f
thirdparty/sonarqube-gradle-plugin-3.1/sonar-scanner-api-2.16.0.226.jar
thirdparty/sonarqube-gradle-plugin-3.1/sonarqube-gradle-plugin-3.1.jar
作为替代方法,您可以在本地重新创建 Maven 层次结构,以便自动解析依赖项。这包括更多的目录和文件,但从长远来看可以更容易维护(如果出现任何新的依赖项,则无需更改 build.gradle
即可更新目录内容):
buildscript {
repositories {
maven {
url "file://${projectDir}/thirdparty"
}
}
dependencies {
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1"
}
}
apply plugin: "org.sonarqube"
这需要重新创建所有必需的文件和目录:
$ find thirdparty/ -type f
thirdparty/org/sonarsource/parent/parent/55/parent-55.pom
thirdparty/org/sonarsource/scanner/api/sonar-scanner-api/2.16.0.226/sonar-scanner-api-2.16.0.226.jar
thirdparty/org/sonarsource/scanner/api/sonar-scanner-api/2.16.0.226/sonar-scanner-api-2.16.0.226.pom
thirdparty/org/sonarsource/scanner/api/sonar-scanner-api-parent/2.16.0.226/sonar-scanner-api-parent-2.16.0.226.pom
thirdparty/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/3.1/sonarqube-gradle-plugin-3.1.jar
thirdparty/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/3.1/sonarqube-gradle-plugin-3.1.pom