Maven 2 Maven依赖项版本范围是否应视为已弃用?

Maven 2 Maven依赖项版本范围是否应视为已弃用?,maven-2,maven-3,maven,Maven 2,Maven 3,Maven,考虑到在官方文档中很难找到任何关于依赖版本范围的信息(我能想到的最好办法是),我想知道他们是否仍然被认为是Maven POMs的一等公民 我想大多数人都会同意这是一种糟糕的做法,但我想知道为什么很难找到任何官方的说法。从正式意义上讲,它们不会被弃用,因为它们将在未来的版本中被删除。然而,它们的局限性(以及随后缺乏广泛采用)意味着它们没有最初预期的那么有用,而且如果不进行重大的重新思考,它们也不可能得到改进 这就是为什么文档只是以设计文档的形式存在的原因——它们是存在的,但重要的用例从未完成到我建

考虑到在官方文档中很难找到任何关于依赖版本范围的信息(我能想到的最好办法是),我想知道他们是否仍然被认为是Maven POMs的一等公民


我想大多数人都会同意这是一种糟糕的做法,但我想知道为什么很难找到任何官方的说法。

从正式意义上讲,它们不会被弃用,因为它们将在未来的版本中被删除。然而,它们的局限性(以及随后缺乏广泛采用)意味着它们没有最初预期的那么有用,而且如果不进行重大的重新思考,它们也不可能得到改进

这就是为什么文档只是以设计文档的形式存在的原因——它们是存在的,但重要的用例从未完成到我建议普遍使用它们的程度


如果您有一个当前可用的用例,并且能够适应这些限制,那么您可以期望它们在可预见的未来继续工作,但是在工作中几乎没有超出这一范围的内容。

我不知道您为什么认为版本范围没有文档化。文件中有一个具体的摘要

然而,一个巨大的问题(在我看来)是,有文件记载“依赖范围的解析不应解析为快照(开发版本),除非它包含为明确的边界。”(您提供的链接),但系统的行为不同。如果使用版本范围,则将获得快照版本(如果它们存在于您的范围内)()。关于是否需要这样做的讨论尚未结束


当前-如果使用版本范围-可能会获得快照依赖项。所以你真的必须小心决定是否需要这样做。它可能对您自己开发的依赖性有用,但我怀疑您是否应该将其用于第三方库。

版本范围是Maven仍然有用的唯一原因。即使考虑不使用它们也是一种糟糕的做法,因为它会导致多模块构建、非功能性父POM、需要10分钟或更长时间的构建、结构不良的项目(如Spring、Hibernate和Wicket)的灾难,正如我们在非法争论播客中所述

为了回答您的问题,它们没有被弃用,并且在许多项目中成功地得到了积极的使用(除非Sonatype允许将损坏的元数据放入ApacheMavenCentral)


如果您想要一个非常好的非多模块构建(仅reactor.xml)示例,其中广泛使用了版本范围,请查看粘性代码(http://code.google.com/p/stickycode/)

我在谷歌上搜索,我能找到的最好的链接就是上面的链接。我本来希望Apache站点上有一些官方的东西——因为它毕竟是一个Apache项目。但是谢谢你的链接。@Kutzi Sonatype是maven项目(和生态系统)的贡献者,所以他们的文档也是某种“第一手”信息。但只是“第一手”。所以,在我看到正式的Apache文档之前,我坚持我的说法,版本范围没有文档化;-)@Kutzi祝您使用maven(和其他开源软件)时好运,只考虑官方文档:-)我不想在这里开始讨论,但我并不是说我只考虑官方文档。我的观点是:如果它不是官方文档的一部分,那么它就不是官方支持的功能。@BrettPorter,你有“缺乏广泛采用”的来源吗?为什么它们不像最初预期的那样有用?