Groovy Gradle存储库作为项目字段
在gradle中,我可以使用自定义布局模式指定存储库,如下所示Groovy Gradle存储库作为项目字段,groovy,gradle,Groovy,Gradle,在gradle中,我可以使用自定义布局模式指定存储库,如下所示 repositories { ivy { url "http://repo.mycompany.com/repo" layout "pattern", { artifact "3rd-party-artifacts/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" artifact "company-ar
repositories {
ivy {
url "http://repo.mycompany.com/repo"
layout "pattern", {
artifact "3rd-party-artifacts/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
artifact "company-artifacts/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
ivy "ivy-files/[organisation]/[module]/[revision]/ivy.xml"
}
}
}
这很好,但是如果我还想使用uploadArchives
和buildscript
闭包,我还需要指定存储库。我的想法是将存储库划分为一个字段
@Field def myRepos = {
ivy {
url "http://repo.mycompany.com/repo"
layout "pattern", {
artifact "3rd-party-artifacts/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
artifact "company-artifacts/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
ivy "ivy-files/[organisation]/[module]/[revision]/ivy.xml"
}
}
}
这适用于
repositories myRepos
要不是
buildscript {
repositories myRepos
}
及
这给
No such property: myRepos for class: 'org.gradle.api.internal.initialization.DefaultScriptHandler'
我的gradle版本是1.11。不用
@Field
,只需执行def myRepos=…
。buildscript
块非常特殊,如果您想在它和构建脚本的其余部分之间共享,您必须在ext.myRepos=…
内部buildscript
,并从外部使用buildscript.myRepos
引用它。这很有效!是否可以将此批次提取到单独的共享build.gradle文件中(使用“apply from”)?我试过了,但是在外部脚本中,buildscript
方法似乎没有被调用,这是否与buildscript
的特殊性有关?是的<无法将代码>构建脚本移动到单独的共享构建脚本中。也许它的内容可以,但这会变得复杂,我会尽量避免。从2.1或2.2开始,将有一个新的plugins{}
块,它将逐渐取代buildscript
,在这方面可能工作得更好。
No such property: myRepos for class: 'org.gradle.api.internal.initialization.DefaultScriptHandler'