在buildscript范围中使用gradle项目变量

时间:2016-11-23 09:00:06

标签: gradle

这里有一个类似的问题Access project extra properties in buildscript closure

但我找到了一个"解决方法"这看起来不是最佳的

我有一个多gradle项目 - 我在主gradle文件中声明了存储库 使用

int

现在我还必须为构建脚本设置这些,因为即时通讯使用插件!

再次使用buildscript {repositories ...

现在我没有粘贴URL两次而是想使用属性 - 因为我认为project.ext属性在buildscript阶段没有设置因此我把它们放在了 在我的gradle.settings文件中

我无法设置rootProject.ext.xx设置,因此我必须使用

subprojects {
 repostiories {
    maven {..}
  }
}

现在我可以在build.gradle文件中使用gradle.ext.mavenURL

有更好的方法吗? 有没有办法在一个块中为所有项目设置buildscript和依赖性存储库,而不需要为buildscript重复一次,为依赖项重复一次?

1 个答案:

答案 0 :(得分:3)

def repoClosure = { RepositoryHandler repoHandler ->
    repoHandler.mavenLocal()
    repoHandler.mavenCentral()
    ['http://mycompany/repo1', 'http://mycompany/repo2'].each { mavenURL ->
        repoHandler.maven {
            url mavenURL
            credentials {
                username 'foo'
                password 'bar'
            }
        }
    }
}
project.with {
    allprojects {
        repoClosure(buildscript.repositories)
        repoClosure(repositories)
    }
}