在我们的项目中,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?
答案 0 :(得分:0)
您对关于人工制品版本的maven概念存在误解。 SNAPSHOT和发布版本之间存在很大差异,我建议您阅读这些文档:Release and Snapshot和Repositories settings
回到您的问题,解决方案是从您的本地maven存储库中删除在nexus上更新的人工制品。您有两个选择:
在你的曝光中你没有提到为什么你必须在nexus中更新一个发布jar。从概念上讲,这闻起来很香。我建议重新考虑您的发布程序,并避免更新版本。最好是创建补丁/次要版本而不是更新版本。代替客户端,当客户端应检查版本是否更新并基于什么?下载的文件时间戳不可靠。