我正在尝试将第三方库的快照版本部署到我们的本地仓库(由于遗留原因,这是旧版本,不再托管在任何在线仓库,目前我无法替换它,因此我必须在本地托管它。
现在,我想我已经误解了SNAPSHOT概念,所以如果有人能指引我,我会非常感激。我的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下载正确的快照版本,还是我没有业务上传第三方SNAPSHOT文件到我们的仓库?
答案 0 :(得分:4)
你的用例很好。我相信Maven人员推荐的最佳做法是,一旦将SNAPSHOT版本的jar上传到共享存储库,就应该停止将其视为SNAPSHOT,而不是作为版本。
这是有道理的,因为您希望人们依赖 该工件的特定版本 。工件不在积极开发中,并且不会在任何时间点随意更改,因此应将其视为发布。只有一个你给自己个人的名字,一个别人认为是快照。
当你要求依赖foo-0.5.0-SNAPSHOT时,我不相信Maven会寻找foo-0.5.0-。我相信它确实在存储库中寻找foo-0.5.0-SNAPSHOT,这就是你找不到它的原因。 (虽然不是100%肯定,因为我们没有为我们的SNAPSHOTS添加时间戳。我们只是不断地用新版本覆盖-SNAPSHOT罐子。)
因此,将foo-0.5.0-20090612.124.jar放入您的第三方存储库(由于上述原因,该存储库应该只包含版本)。然后在你的pom中,明确地引用“已发布”的工件foo-0.5.0-20090612.124,一切都应该正常工作。
答案 1 :(得分:0)