1

我有一个依赖于项目 B 的项目 A。项目 B 的版本号为 1.0.0-SNAPSHOT 已经有一段时间了。在我们发布版本号为 1.0.0 的项目 B 后,我们从存储库中删除了所有旧快照,因为它占用了服务器上的大量空间来保留 836 个旧快照。但是,项目 A 现在失败了,因为它再也找不到项目 B 的 1.0.0-SNAPSHOT 版本。

问题:为什么 maven 不认为 1.0.0 版本与快照同样有用,而只是采用它呢?

4

2 回答 2

2

好吧,因为这就是它的工作方式和设计方式。实际上,1.0.0 版本是 1.0.0-SNAPSHOT 版本但发布并不是那么明显,因为对此没有强烈的要求。可能有一些 SNAPSHOT 版本从未发布,或者最终版本的工件没有 SNAPSHOT(因为它们没有被部署)。

这些实际上是 2 个不同的版本,因此未经您的许可不应自动切换它们。事实上,Maven 很聪明,可以猜测 1.0.0 可能是 1.0.0-SNAPSHOT 的最终版本,并在发布过程中提出这一建议(by maven-release-plugin),但只要您开发您的代码,它就完全符合您的要求,并且你想要 1.0.0-SNAPSHOT 版本,正如你在 POM 中需要的那样。

于 2012-04-25T14:44:07.333 回答
1

发布只是不等同于快照 :( 快照本质上是“开发”构建,因此 Maven 不会尝试并聪明地知道要获取哪个。您要么必须将快照放回存储库,要么更改您的项目取决于发布版本,特别是 1.0.0。

于 2012-04-25T14:44:49.390 回答