【问题标题】:How to use Sonatype Nexus with Gradle to proxy repsitories?如何使用带有 Gradle 的 Sonatype Nexus 来代理存储库?
【发布时间】:2012-11-03 14:23:36
【问题描述】:

假设我在内部服务器上运行 Sonatype Nexus,我想用它来代理 repo1.maven.org 和其他存储库。在 Maven 中,我只需将 <mirror> 配置添加到 settings.xml。如何使用 Gradle 做到这一点?

更新:我想这样做,而不必将我的 Nexus 实例的 URL 硬编码到我拥有的每个项目中。所以我正在寻找 Maven <mirror> 设置的精确副本。

我现在能想到的最好的办法就是做这样的事情:

repositories {
    maven {
        url "$nexusUrl/content/groups/public"
    }
}

然后在每个开发人员的计算机上将其放入~/.gradle/gradle.properties

nexusUrl = https://nexus.company.com

但是,这看起来已经被破解了,我仍然需要将 5 行添加到每个项目中。有没有更优雅的方法来做到这一点?

【问题讨论】:

    标签: gradle


    【解决方案1】:

    初始化脚本可能是最好的方法。在User Guide看看这一章。

    它们为您提供了一种将逻辑注入所有项目的方法。

    【讨论】:

      【解决方案2】:

      the documentationabout init scripts 中所述:

      创建一个以.gradle 结尾的文件夹和文件,例如:~/.gradle/init.d/mirror.gradle。 附内容:

      initscript {
        repositories {
           maven {
              url "http://repo.mycompany.com/maven2"
          }
        }
      }
      

      【讨论】:

      • 此文档 URL 中的片段 ID 不再存在-您指的是文档的哪一部分?
      • 这个解决方案没有抓住重点!在 Maven 中,您可以在项目 pom.xml 中指定存储库。在您的 PC 上,您可以使用自己的存储库覆盖它,但这是开发人员的选择,而不是工件作者的选择。工件作者如何决定您要使用哪个本地存储库?
      • @BrunoRanschaert 工件作者不会决定您使用什么存储库来查找工件。 gradle 是一个构建工具。如果你构建项目A,依赖依赖B,项目A的build.gradle文件决定在哪里找到依赖B。依赖B的pom,如果由gradle生成,不包含任何存储库信息。因为,与 Maven 不同,pom 仅用于描述工件的依赖关系(以及作者、许可证等)。不指定下载依赖项的方式/位置,或如何构建工件。
      • @jb-nizet。你错过了我的观点。我是一名图书馆作者,我将我的图书馆发布为带有 build.gradle 的 git。现在您下载该库以进行一些本地修改(开源),但您想使用您的公司存储库。作为库用户/修改者,您应该能够在其中放置代理,而无需修改库源。您想要代理某些工件的原因有几个:例如。您可能已经修改了其中一个依赖项,...(这个讨论是另一个主题)。
      猜你喜欢
      • 2014-10-05
      • 2011-06-14
      • 2013-08-02
      • 2013-06-05
      • 2023-03-05
      • 2021-04-11
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      相关资源
      最近更新 更多