在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。
最佳答案
除了使用@Field
,您还可以执行def myRepos = ...
。 buildscript
块是非常特殊的,如果要在其与其余构建脚本之间共享,则必须在ext.myRepos = ...
内进行buildscript
,并从外部使用buildscript.myRepos
进行引用。