在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"
    }
  }
}

很好,但是如果我还想使用uploadArchivesbuildscript闭包,则还需要指定存储库。我的想法是将存储库分解为一个字段。
@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进行引用。

09-04 14:55