我有世界上最简单的 Maven/Jenkins/Nexus 设置。
Maven 每天通过 Jenkins 运行数十次,并将SNAPSHOT
s 部署到我们的 Nexus 存储库中。
每隔一段时间,似乎没有任何原因,运行另一个需要解析SNAPSHOT
s 的 Maven 作业都会失败。在这些罕见的情况下它失败了,Maven 告诉我它再也找不到SNAPSHOT
它在几个小时前上传的许多情况下的 s。
如果我将 Web 浏览器指向 Maven 正在使用的存储库位置,我可以很好地找到它们。
在这些错误之前,我总是看到(就像我在成功案例中所做的那样)一堆maven-metadata.xml
正在下载的文件。大概这些文件告诉 Maven 一些关于如何获取的信息,例如1.009-SNAPSHOT
并将其转换为1.009-somehugetimestamphere
.
(我从来没有找到这个文件的任何文档,而且它似乎没有将其中包含的任何文件名标记为“最新”或类似的东西。事实上,我根本看不出它有什么用处,但显然它必须是。)
(我还在调试输出中看到了各种引用resolver-status.properties
,这似乎是另一个写入本地存储库的未记录文件,该文件跟踪与分辨率有关的内容,但我承认我不知道是什么。)
我的广泛问题是:Maven 究竟是如何下载、解析和检查SNAPSHOT
s 的?假设存储库信息是有效的(毕竟,这项工作 90% 的时间都在工作,并且 10% 的时间没有任何更改而失败),Maven 对给定的存储库采取哪些步骤来找到合适的SNAPSHOT
?
编辑:找到一些文档:http ://maven.apache.org/ref/3.0.4/maven-repository-metadata/repository-metadata.html虽然它没有解释为什么maven-metadata.xml
我在 Nexus 2.0 中找不到任何文件安装中有<latest/>
元素。它也没有详细说明如何使用这些文件。
我在用户列表上的帖子得到了回应,其中一些可能是 Nexus 问题,因为它可能会或可能不会正确生成这些maven-metadata.xml
文件。