maven-2 - Maven 尝试使用错误的快照版本

标签 maven-2 snapshot

我正在尝试将第 3 方库的快照版本部署到我们的本地存储库(由于遗留原因,这是旧版本,不再托管在任何在线存储库中,目前我无法替换它,因此我必须在本地托管它)。

现在,我想我误解了快照的概念,所以如果有人能纠正我的话,我将非常感激。我的 jar 名为 foo-0.5.0-20090612.124.jar,我尝试使用 maven deploy:deploy 文件将其上传到版本 0.5.0 下的 org.bar.foo。 我的 POM 中的版本依赖项是 0.5.0-SNAPSHOT

每次我将 jar 文件上传到本地存储库时,文件名中日期后面的数字都会迭代(即到 125),但是当我运行 maven install 时,maven 会尝试下载具有先前数字的 jar(即 124) )。

那么,有什么方法可以让 Maven 下载正确的快照版本,或者我不应该将第 3 方快照文件上传到我们的存储库吗?

最佳答案

您的用例很好。我相信 Maven 人员推荐的最佳实践是,一旦您将 jar 的快照版本上传到共享存储库,您应该停止将其视为快照,而应将其视为发布。

这是有道理的,因为您希望人们依赖该工件的特定版本。该工件并未处于积极开发状态,并且预计不会在任何时间点任意更改,因此应将其视为发布版本。只是一个您自己命名的名字,以及一个其他人认为是快照的名称。

当您请求依赖项 foo-0.5.0-SNAPSHOT 时,我不相信 Maven 会查找 foo-0.5.0-。我相信它确实在存储库中查找 foo-0.5.0-SNAPSHOT,这就是您找不到它的原因。 (不过对此并不能 100% 确定,因为我们没有为快照添加时间戳。我们只是不断地用更新的版本覆盖 -SNAPSHOT jar。)

因此,将 foo-0.5.0-20090612.124.jar 放入您的第三方存储库(该存储库应仅包含出于上述原因的版本)。然后在您的 pom 中,显式引用“已发布”工件 foo-0.5.0-20090612.124,一切都应该正常工作。

关于maven-2 - Maven 尝试使用错误的快照版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986040/

相关文章:

repository - 快照、候选发布和发布之间有什么区别?

vue.js - 使用 RouterLinkStub 进行 Vue 快照测试不会按预期呈现 anchor

java - JAXWS 代码生成和实现以及 JDK1.5 的 Spring

maven-2 - 如何在maven 2中指定一串目标作为defaultGoal?

java - Maven 2依赖问题

gradle - 使用多个模块将快照发布到 oss.jfrog.org 失败并显示 403

java - 如何为 Play Framework 项目编写 Maven POM 文件?

maven-2 - 如何在 Maven 中为依赖项指定存储库

mysql - 服务器快照可能会损坏 MySQL 事务吗?

ios - 使用 Objective-C 进行 FaSTLane 快照