【问题标题】:Gradle: How can I configure repositories in buildscript block of external scriptGradle:如何在外部脚本的 buildscript 块中配置存储库
【发布时间】:2016-04-27 17:35:55
【问题描述】:

在外部脚本 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 因为没有存储库 已定义。

【问题讨论】:

    标签: gradle


    【解决方案1】:

    这是一种为存储库定义提供单一来源的方法。

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

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

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

      // build.gradle
      repositories repos
      

    【讨论】:

    • 对我来说在 buidscript 部分不起作用:无法为 org.gradle.api.internal.initialization.DefaultScriptHandler 类型的对象获取未知属性“repos”
    • 您是否从外部文件“应用”了 repo 配置?把你的build.gradle上传到github.com gust,我去看看。
    【解决方案2】:

    不支持将 buildScript 块的部分外部化到其他脚本中。有一个open defect,你应该投票。

    【讨论】:

    • 存储库定义必须在一个单独的文件中。
    • 抱歉,错过了。我相信你所问的目前是不可能的。更新答案。
    • 实际上有一种方法可以做到这一点。请看我的回答:stackoverflow.com/a/45401790/1860089
    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2017-08-15
    • 2011-03-04
    相关资源
    最近更新 更多