在nexus中更新了Jar,而不是通过maven更新

时间:2018-06-12 04:03:39

标签: java maven nexus

在我们的项目中,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存储库中,即使我们也强制更新。

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

即使通过maven更新在nexus中更新相同的文件夹,有没有办法每次都使用最新的jar?

1 个答案:

答案 0 :(得分:0)

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

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

  1. 列表项手册删除文件夹$ {user.home} /.m2 / repository / com / pqr / xyz / abc / xyz / 2.2.0.0.4.1 /(这假设您的本地存储库位于您的主目录下)< / LI>
  2. 使用dependency plugin - purge local repository删除本地文物。您可以找到example here
  3. 在你的曝光中你没有提到为什么你必须在nexus中更新一个发布jar。从概念上讲,这闻起来很香。我建议重新考虑您的发布程序,并避免更新版本。最好是创建补丁/次要版本而不是更新版本。代替客户端,当客户端应检查版本是否更新并基于什么?下载的文件时间戳不可靠。