12

我遇到了一个奇怪的问题:

我使用“ mvn deploy”(Maven 3.3.9,Jenkins 2.45,Nexus 2.12.0)在jenkins中将快照jar部署到我的nexus,结果如下(假设jar名称为userdao.jar):

Uploaded: myNexusIp/nexus/content/repositories/snapshots/xxx/1.0-SNAPSHOT/userdao-1.0-20170512.111840-6.jar 
Uploaded: myNexusIp/nexus/content/repositories/snapshots/xxx/1.0-SNAPSHOT/maven-metadata.xml

构建成功,一切正常。

但是当我构建另一个依赖于上面的 maven 项目时,userdao.jar发生了如下错误:

Could not find artifact userdao:jar:1.0-20170512.111840-6 in public (http://myNexusIp/nexus/content/groups/public/)

定位后我发现maven-metadata.xmlnexus中的时间戳比实际jar的时间戳多一秒!
如下:

  • maven-metadata.xml:1.0-20170512.111840-6
  • 实际存在的快照 jar:userdao-1.0-20170512.111839-6.jar

因为userdao-1.0-20170512.111840-6.jarNexus 中不存在,所以应该是正确的userdao-1.0-20170512.111839-6.jar,所以它错误。

谁能告诉我为什么以及如何解决它?

4

6 回答 6

7

这已被确认为 maven-3.5 问题https://issues.apache.org/jira/browse/MNG-6240并已修复。带有修复程序的 maven-3.5.1 版本在此处投票https://www.mail-archive.com/dev@maven.apache.org/msg114783.html

于 2017-09-29T15:02:12.770 回答
7

我实际上发现了相反的情况。从 Maven 3.3.9 升级到 3.5.0 后,我可以可靠地部署工件,其中 Nexus 上 metadata.xml 文件中出现的时间戳与部署的实际文件相比是不正确的。

通过降级(回到 3.3.9)一切正常。metadata.xml 版本和时间戳始终匹配。

也许这与 Maven 3.5.0 升级删除 Aether 有关?

于 2017-06-06T17:00:32.357 回答
1

我将maven从3.3.9更新到3.5.0,发现maven-metadata.xml上传了一次,问题解决了!所以我猜这是 maven 3.3.9 中的一个错误,我目前的解决方案是将 maven 更新到 3.5.0。

于 2017-05-16T10:16:33.280 回答
1

首先要尝试的是在您上传快照工件的存储库上重建元数据。

请参阅“管理计划任务

重建 Maven 元数据文件

此任务将使用正确的信息重建maven-metadata.xml文件,还将验证指定存储库/组中所有文件的校验和 ( .md5/ .sha1)。
通常,此任务是手动运行以修复损坏的存储库。

于 2017-05-14T06:09:21.273 回答
0

我在使用 maven 3.3.9 时遇到了同样的问题。在我的情况下,升级到 maven 3.5.4 解决了这个问题,在默认部署阶段不再“两次”。

于 2019-08-20T07:46:19.577 回答
0

我在使用 Maven 3.3.9 时遇到了同样的问题。通过升级到 Maven 3.5.4 进行测试,但问题仍然存在。maven-metadata.xml 上传两次的问题是由于spotbug maven plugin v3.1.3。它在我测试过的最新的 spotbug maven 插件版本 3.1.12 中得到了解决。

于 2019-07-09T12:06:59.960 回答