在gradle中,我可以使用自定义布局模式指定我的存储库
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
}
和
uploadArchives {
repositories myRepos
}
这给出了
No such property: myRepos for class: 'org.gradle.api.internal.initialization.DefaultScriptHandler'
我的gradle版本是1.11。
答案 0 :(得分:1)
您可以@Field
而不是def myRepos = ...
。 buildscript
块非常特殊,如果您要在其与构建脚本的其余部分之间进行共享,则必须在ext.myRepos = ...
内执行buildscript
,并使用它来引用它buildscript.myRepos
来自外部。