Maven 2 Maven试图使用错误的快照版本

Maven 2 Maven试图使用错误的快照版本,maven-2,snapshot,Maven 2,Snapshot,我正在尝试将第三方库的快照版本部署到本地repo(由于遗留原因,这是一个旧版本,不再在任何在线repo上托管,目前我无法替换它,因此我必须在本地托管它) 现在,我想我误解了快照的概念,所以如果有人能纠正我的错误,我将非常感激。我的jar名为foo-0.5.0-20090612.124.jar,我尝试使用maven deploy:deploy文件将其上传到0.5.0版本下的org.bar.foo。 我的POM中的版本依赖关系是0.5.0-SNAPSHOT 每次我将jar文件上传到本地repo时,文

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

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

每次我将jar文件上传到本地repo时,文件名中日期后的数字都会被迭代(即125),但当我运行maven install时,maven会尝试下载一个带有先前数字(即124)的jar


那么,有没有办法让maven下载正确的快照版本,或者我不需要将第三方快照文件上传到我们的repo?

我不确定我是否遵循,您应该将名为
myartifact.jar
的工件附加到
POM
上,版本为
0.5-snapshot

部署时,存储库应将
-SNAPSHOT
更改为时间戳,并更新存储库元数据以反映这是最新的快照版本,以便它能够正确地服务于快照请求


您使用诸如FTP/HTTP服务器之类的存储库吗?

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

这是有意义的,因为您希望人们依赖于该工件的特定版本。该工件未处于积极开发阶段,并且预计不会在任何时间点任意更改,因此应将其视为发布。只有一个你给自己起的名字,还有一个别人认为是快照的名字

当您询问依赖项foo-0.5.0-SNAPSHOT时,我不相信Maven会寻找foo-0.5.0-。我相信它会在存储库中查找foo-0.5.0-SNAPSHOT,这就是为什么您找不到它的原因。(虽然不是100%确定这一点,因为我们不给快照加时间戳。我们只是在创建快照jar时不断用新版本覆盖它们。)


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

两者都不是,只是本地文件服务器。本回购协议仅供内部使用。不过,这正是我想做的。问题是,当我运行maven install时,它并没有搜索正确的时间戳,而是搜索更早的时间戳。第三方jar中是否存在决定其时间戳的内在因素?我要说的是,本质上你是对的,我真的没有必要将第三方快照添加到我的repo中。最好的解决方案是最简单的,即删除快照标记。