1

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

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

每隔一段时间,似乎没有任何原因,运行另一个需要解析SNAPSHOTs 的 Maven 作业都会失败。在这些罕见的情况下它失败了,Maven 告诉我它再也找不到SNAPSHOT它在几个小时前上传的许多情况下的 s。

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

在这些错误之前,我总是看到(就像我在成功案例中所做的那样)一堆maven-metadata.xml正在下载的文件。大概这些文件告诉 Maven 一些关于如何获取的信息,例如1.009-SNAPSHOT并将其转换为1.009-somehugetimestamphere.

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

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

我的广泛问题是:Maven 究竟是如何下载、解析和检查SNAPSHOTs 的?假设存储库信息是有效的(毕竟,这项工作 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文件。

4

1 回答 1

1

前几天我遇到了一个非常类似的问题,Nexus 服务器代理另一个存储库。就我而言,更改 Nexus 中的过期设置解决了这个问题。我将“Artifact Max Age”和“Metadata Max Age”从 1 天减少到 1 分钟。

于 2012-08-27T13:18:40.013 回答