【问题标题】:Is there better way of configuring repositories in Nexus?有没有更好的方法在 Nexus 中配置存储库?
【发布时间】:2023-03-29 02:43:02
【问题描述】:

我有 Nexus 服务器和团队内共享的 maven 用户设置,其中包含

  <mirrors>
      <mirror>
      <!--This sends everything else to /public 
      http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html
      -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://192.168.16.232:8081/nexus/content/groups/public</url>
    </mirror>    
  </mirrors>

即 pom.xml 中定义的所有存储库(包括默认的 Maven Central)都由 Nexus 提供服务。

在 Nexus 中,新的存储库被添加到公共组中。

问题:有没有更好的方法?目前其他开发人员不了解 Nexus+Maven 交互,并且当 pom.xml 中定义了新的存储库(不是由 Nexus 代理)时,maven 只会说“无法获取工件”。但不是“配置您的 Nexus 服务器”:) 其次,我发现一些公共存储库也从其他一些存储库中缓存,所以最后,我无法确定这个 jar 到底是从哪里来的。

更新:我正在寻找最漂亮、最简单、易于解释和理解的解决方案。

【问题讨论】:

  • 当我在目前的职位上从事构建工作一年多时,我感受到了你的痛苦。但是,这个问题有点模糊和模糊。我敢肯定,如果你在这个网站上搜索,你会发现你的 trully 发布的关于 nexus/jenkins/maven 的同样含糊不清的问题。尽管如此,您越能具体地表达您的需求,就能获得更好的帮助。

标签: maven repository nexus


【解决方案1】:

我将根据我最近的经验给出一些想法,但我的感觉是,您应该确保您对构建以及各个组与其交互有一套明确的要求,并推动您的设计从那些真正的需求构建环境。

提示。

1) 除了 CI 构建服务器,我不会将镜像放在任何地方。通知开发人员,他们可以从他们想要的本地开发框中的任何地方提取,但是当他们签入时,如果无法从 CI 引用的关系中找到依赖项,那么他们必须与您一起工作。这将责任推给他们。

2) 有很多存储库。我会考虑不正式引用这么多公共回购。我对那些回购特别了解不多,但有很多东西。听起来你正在经历重复。但是,您的公共组配置会告诉您 jar 来自何处;该配置中存储库的顺序将确定 jar 的来源。所以,它总是从它找到它的第一个地方拉。

【讨论】:

    【解决方案2】:

    这实际上是我们在我工作的地方完成它的确切方式。我们镜像了大约 30 个公共回购,这是最简单的方法。开发人员都使用我们的 nexus 安装作为一站式购物,当我们需要添加东西时,它只会显示在公共存储库中。这样做还可以让我们更精细地控制人们正在使用的工件,因为我们只包括我们想要允许的东西,而不是世界上的所有东西。

    我们确实有一个不同之处,我们有一个“仅发布”和“仅快照”存储库,而不是一个巨大的公共存储库。主要原因是我们可以有不同的缓存策略,但在组织上也更好一些。

    我对设置的唯一问题是,如果您尝试在不在网络上(办公室或 vpn)的情况下进行构建,那么将无法正常工作。我通过在本地保留 2 个 settings.xml 文件并在我需要的极少数情况下切换来解决这个问题。

    【讨论】:

      猜你喜欢
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 2018-06-19
      • 2021-02-23
      • 2011-08-27
      • 1970-01-01
      相关资源
      最近更新 更多