【问题标题】:Updated Jar in nexus not getting picked through maven update更新的 Jar 没有通过 maven 更新被选中
【发布时间】:2018-11-21 08:58:51
【问题描述】:

在我们的项目中,Nexus 用作 Jar 存储库,我们在 settings.xml 中有以下条目。

<mirror>
     <!--This sends everything else to /public -->
     <id>nexus</id>
     <mirrorOf>*</mirrorOf>
     <url>http://*.*.*.*:7003/nexus/content/groups/public</url>
</mirror>

每当在 nexus 中加载新 jar 时,它都会根据 pom.xml 中的条目上传到路径中。

<dependency>
          <groupId>com.pqr.xyz.abc</groupId>
          <artifactId>xyz</artifactId>
          <version>2.2.0.0.4.1</version> OR <version>LATEST<version>
 </dependency>

所以,如果每次都将 jar 上传到 nexus 中并带有新版本,那么当我们为我们的项目进行 maven 更新时,它就会被选中,该项目具有上述版本的条目(特定版本或最新。

但是,如果我们用更新的 jar 更新 nexus 中的相同版本文件夹,那么 maven update 不会选择最新的 jar,即使我们也强制更新,它也会将旧 jar 保留在 .m2 存储库中。

所以我们认为如果 jar 被替换在 nexus 的同一个文件夹中,那么如果该文件夹已经存在于 .m2 存储库中,它就不会被更新?

有没有办法每次都获取最新的 jar,即使同一个文件夹通过 maven update 在 nexus 中更新?

【问题讨论】:

  • 您使用的是哪个版本的 Maven?在这里要明确一点,您实际上是每次都上传新版本号,还是试图覆盖现有版本?
  • 使用“maven force update”,添加标志 -U 。见stackoverflow.com/questions/4701532/force-maven-update
  • @Tim 我正在使用 Apache Maven 3.1.1。如果我每次都上传新版本,当我进行 maven 更新时它工作正常,它会选择新版本。但是,当我在 nexus 中覆盖相同版本的 jar 时,它不会被选中。
  • @Daniele 我也已经尝试过强制 maven 更新,但没有成功。旧版本的 jar 仍然存在于 .m2 文件夹中,其中 jar 在 nexus 中被覆盖,
  • 那么我认为问题出在您的 Nexus 配置上。我敢打赌你的覆盖被拒绝了。

标签: java maven nexus


【解决方案1】:

您对有关人工制品版本控制的 maven 概念有误解。 SNAPSHOT 和发布版本之间存在很大差异,我建议阅读这些文档:Release and SnapshotRepositories settings

回到您的问题,解决方案是从您的本地 maven 存储库中删除在 nexus 上更新的人工制品。你有两个选择:

  1. 列表项手动删除文件夹 ${user.home}/.m2/repository/com/pqr/xyz/abc/xyz/2.2.0.0.4.1/(假设您的本地存储库在您的主目录下)
  2. 使用dependency plugin - purge local repository 删除本地伪影。你可以找到example here

在您的公开中,您没有提到为什么必须更新 nexus 中的发布 jar。从概念上讲,这闻起来很香。我建议重新考虑您的发布程序并避免更新发布版本。最好创建一个补丁/次要版本,而不是更新一个版本。代替客户端,客户端何时应检查版本是否已更新以及基于什么?下载的文件时间戳不可靠。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多