Gradle存储库作为项目字段

时间:2014-08-11 09:41:44

标签: 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-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。

1 个答案:

答案 0 :(得分:1)

您可以@Field而不是def myRepos = ...buildscript块非常特殊,如果您要在其与构建脚本的其余部分之间进行共享,则必须在ext.myRepos = ...内执行buildscript,并使用它来引用它buildscript.myRepos来自外部。