2012-04-25 65 views
1

我有一个依赖项目B的项目A.项目B的版本号为1.0.0-SNAPSHOT很长一段时间。在我们发布了版本号为1.0.0的项目B之后,我们从存储库中删除了所有旧快照,因为它让位于服务器上的大量空间以保留836个旧快照。但是,项目A现在失败了,因为它无法再找到项目B的1.0.0-SNAPSHOT版本。为什么maven没有将该版本视为最新的快照?

问题:为什么maven不会认为1.0.0版本同样有用作为快照,而只是取而代之呢?

回答

2

嗯,因为这是它是如何工作的以及它是如何设计的。实际上,版本1.0.0并不是很明显,版本是1.0.0-SNAPSHOT但已经发布,因为对此没有强烈要求。可能有一些SNAPSHOTs版本从未发布过,或者没有SNAPSHOT的最终版本的工件(因为它们没有部署)。

这些实际上是2个不同的版本,所以不应该在没有您的许可的情况下自动切换它们。事实上,Maven足够聪明地猜测,1.0.0可能是1.0.0-SNAPSHOT的最终版本,并在发布过程中提出这个建议(由maven-release-plugin提供),但只要你开发了你的代码片段,它就完全按照你的想法并且您需要POM中的1.0.0-SNAPSHOT版本。

1

发布只是不等同于SNAPSHOT :(快照本质上是'开发'构建,因此Maven不会尝试并且很聪明地获取哪一个,您必须将快照放回存储库,或者改变你的项目以取决于发行版本,特别是1.0.0。

相关问题