【问题标题】:Why can't Maven find my SNAPSHOT artifact when I can download it manually just fine?当我可以手动下载它时,为什么 Maven 找不到我的 SNAPSHOT 工件?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 谢谢;这很有帮助,但不是根本问题。
    • 只是好奇,您能用您发现的根本原因更新问题吗?
    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2019-12-28
    • 2019-03-23
    • 1970-01-01
    相关资源
    最近更新 更多