当我可以手动下载它时,为什么Maven找不到我的SNAPSHOT工件呢?

时间:2012-08-24 20:42:51

标签: maven nexus maven-metadata

我拥有世界上最简单的Maven / Jenkins / Nexus设置。

Maven每天通过Jenkins运行数十次,并将SNAPSHOT部署到我们的Nexus存储库中。

每次在蓝色的月亮中,似乎没有原因,运行另一个需要解决SNAPSHOT s的Maven工作将会失败。在这些极少数情况下,Maven告诉我,它在几个小时之前的许多情况下都无法再找到它上传的SNAPSHOT

如果我将我的网络浏览器指向Maven正在使用的存储库位置,我可以很好地找到它们。

在这些错误发生之前,我总是看到(正如我在成功案例中所做的那样)下载了一堆maven-metadata.xml个文件。据推测,这些文件告诉Maven有关如何采取的方法,例如1.009-SNAPSHOT并将其转为1.009-somehugetimestamphere

我从来没有找到任何这个文件的文档,它似乎没有将其中包含的任何文件名标记为“最新”或类似的东西。实际上我看不出它是怎么回事任何用途,但显然必须是。)

(我还在调试输出中看到对resolver-status.properties的各种引用,这似乎是写入本地存储库的另一个未记录的文件,它跟踪与分辨率有关的内容,但我承认我不知道是什么。)

我的主要问题是: Maven是如何完成下载,解析和检查SNAPSHOT的?假设存储库信息有效(毕竟,这个工作有90%的时间工作,10%的时间没有更改就失败了),Maven采取了哪些步骤与给定的存储库一起找到正确的SNAPSHOT

编辑:找到部分文档:http://maven.apache.org/ref/3.0.4/maven-repository-metadata/repository-metadata.html虽然没有解释为什么我在Nexus 2.0中找不到maven-metadata.xml文件的原因安装中包含<latest/>元素。它也没有详细说明如何使用这些文件。

我的posting on the users list收到了一些回复,其中一些可能是Nexus问题,因为它可能会也可能不会正确生成这些maven-metadata.xml文件。

1 个答案:

答案 0 :(得分:1)

前几天我遇到了一个非常类似的问题,Nexus服务器代理了另一个存储库。在我的情况下,更改Nexus中的过期设置修复了问题。我减少了&#34;神器最大年龄&#34;和&#34;元数据最大年龄&#34;从1天到1分钟。