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

时间:2009-06-12 10:37:36

标签: maven-2 snapshot

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

现在,我想我已经误解了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文件到我们的仓库?

2 个答案:

答案 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)

我不确定我是否关注,您应该将myartifact.jar附加到POM的工件附加到版本为0.5-SNAPSHOT的<{1}}。

部署时,您的存储库应该-SNAPSHOT更改为时间戳并更新存储库元数据以反映这是最新的SNAPSHOT版本,以便它可以正确地提供SNAPSHOT请求。

您是使用ArchivaNexus等存储库还是仅使用FTP / HTTP服务器?