根据插件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