Gradle:如何在外部脚本的buildscript块中配置存储库

Gradle:如何在外部脚本的buildscript块中配置存储库,gradle,Gradle,在外部脚本common/buildversion.gradle中,我有: buildscript { // Copy repositories definitions from this buildscript to all projects (allprojects*.repositories + [repositories]).each { it.configure { apply from: rootProject.file('../.

在外部脚本common/buildversion.gradle中,我有:

buildscript {
    // Copy repositories definitions from this buildscript to all projects
    (allprojects*.repositories + [repositories]).each {
        it.configure {
           apply from: rootProject.file('../../common/repositories.gradle')
        }
    }

    dependencies { classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:1.2" }
}

apply plugin: org.sonarqube.gradle.SonarQubePlugin
在common/repositories.gradle中:

repositories{
    maven { url "https://plugins.gradle.org/m2/" }
}
我得到一个错误:

无法解析外部依赖关系 sonarqube gradle插件,因为没有存储库 定义


不支持将buildScript块的部分外部化到其他脚本中。有一种方法,您应该对此进行投票。

这里有一种方法可以为存储库定义提供一个单一的源

  • 将存储库声明为“ext”变量

    // repositories.gradle
    
    ext.repos = {
        maven {
            name "repo1"
            url "repo1_url"
        }
        maven {
            name "repo2"
            url "repo2_url"
        }
    }
    
  • 在您的build.gradle中“应用”

    // build.gradle
    apply from: "${project.projectDir}/repositories.gradle"
    
  • 在存储库声明中使用变量

    // build.gradle
    repositories repos
    

  • 存储库定义必须位于单独的文件中。抱歉,遗漏了该文件。我相信你的要求目前是不可能的。更新答案。实际上有一种方法可以做到这一点。请参阅我的答案:BuildScript部分对我不起作用:无法获取类型为org.gradle.api.internal.initialization.DefaultScriptHandler的对象的未知属性“repo”是否从外部文件“应用”repo配置?将build.gradle上传到github.com gust,我会查看。