我正在尝试将第 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/