4

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

现在,我想我误解了 SNAPSHOT 的概念,所以如果有人能纠正我,我会非常感激。我拥有的 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 下载正确的快照版本,或者我应该没有业务将 3rd 方 SNAPSHOT 文件上传到我们的仓库?

4

2 回答 2

4

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

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

当您询问依赖项 foo-0.5.0-SNAPSHOT 时,我不相信 Maven 会寻找 foo-0.5.0-。我相信它确实会在存储库中查找 foo-0.5.0-SNAPSHOT,这就是您找不到它的原因。(虽然不能 100% 确定这一点,因为我们没有为我们的 SNAPSHOTS 加上时间戳。我们只是在制作时不断地用更新的版本覆盖 -SNAPSHOT jars。)

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

于 2009-06-12T17:53:45.457 回答
0

我不确定我是否遵循,您应该有一个名为myartifact.jar附加到 a的工件POM,其版本为0.5-SNAPSHOT.

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

您使用诸如ArchivaNexus之类的存储库还是仅使用 FTP/HTTP 服务器?

于 2009-06-12T10:45:25.300 回答