【发布时间】:2012-08-20 10:18:20
【问题描述】:
我拥有世界上最简单的 Maven/Jenkins/Nexus 设置。
Maven 每天通过 Jenkins 运行数十次,并将 SNAPSHOTs 部署到我们的 Nexus 存储库中。
每一次在看似没有原因的情况下,运行另一个需要SNAPSHOTs 分辨率的 Maven 作业都会失败。在这些罕见的情况下它会失败,Maven 告诉我它再也找不到它在许多情况下在几个小时前上传的 SNAPSHOTs。
如果我将 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 虽然它没有解释为什么我在 Nexus 2.0 安装中找到的 maven-metadata.xml 文件都没有 @ 987654333@ 元素在其中。它也没有详细说明如何使用这些文件。
我的posting on the users list 回复说其中一些可能是 Nexus 问题,因为它可能会或可能不会正确生成这些 maven-metadata.xml 文件。
【问题讨论】:
标签: maven nexus maven-metadata