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

5
在外部脚本 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-plugin,因为没有定义任何存储库。

2个回答

2
这里有一种方法可以为仓库定义拥有单一的来源。
  1. declare the repositories as an "ext" variables

    // repositories.gradle
    
    ext.repos = {
        maven {
            name "repo1"
            url "repo1_url"
        }
        maven {
            name "repo2"
            url "repo2_url"
        }
    }
    
  2. "apply" in your build.gradle

    // build.gradle
    apply from: "${project.projectDir}/repositories.gradle"
    
  3. use variable in repositories declaration

    // build.gradle
    repositories repos
    

对我来说,在buidscript部分无法工作: 无法获取类型为org.gradle.api.internal.initialization.DefaultScriptHandler的对象的未知属性“repos”。 - Hollerweger
你是否“应用”了外部文件中的仓库配置?将你的 build.gradle 上传到 github.com 上,我来查看一下。 - Amnon

0

将buildScript块的部分外部化到其他脚本中不受支持。有一个未解决的缺陷,您应该对其进行投票。


仓库定义必须在单独的文件中。 - isobretatel
抱歉,我错过了。我相信你现在所问的是不可能的。正在更新答案。 - RaGe
实际上有一种方法可以做到这一点。请查看我的答案:https://dev59.com/mJbfa4cB1Zd3GeqPu4QR#45401790 - Amnon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接