首页 文章

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

提问于
浏览
2

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

但我找到了一个看起来不太理想的“解决方法”

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

subprojects {
 repostiories {
    maven {..}
  }
}

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

所以再次使用buildscript {存储库......

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

我无法设置rootProject.ext.xx设置,所以我不得不使用

gradle.ext {
 mavenURLs =  [ companyURL1, companyURL2 ... etc]
}

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

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

1 回答

  • 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)
        }
    }
    

相关问题