如何使maven在版本范围内使用最新版本?

如何使maven在版本范围内使用最新版本?,maven,maven-2,Maven,Maven 2,在我的maven项目中,我使用的依赖项如下: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>[4.2.2, 5.0)</version> </dependency> org.apache.httpcomponents

在我的maven项目中,我使用的依赖项如下:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>[4.2.2, 5.0)</version>
</dependency>

org.apache.httpcomponents
httpclient
[4.2.2, 5.0)
由于下一个主要版本(5.0)可能会更改API,我希望我的项目使用branch 4.x可用的最新stable版本

今天早上的bug调查告诉我这个表达式[4.2.2,5.0)可以捕获任何可用的版本


如何让maven使用版本范围内的最新版本?

查看文档,我注意到以下评论:

依赖范围的解析不应解析为快照(开发版本),除非它作为显式边界包含

除非工件版本以<代码> -快照< /代码>结束,否则Maven会认为它是一个有效的发布版本。据我所知,<代码> -AlpHA1/<代码对Maven没有特殊意义。它只是另一个随机限定符。


无论如何,我强烈建议您放弃版本范围。任何稳定的项目都应该以可预测的版本为目标,而版本范围与此背道而驰。

Maven 3也支持alpha、beta和快照的版本控制 按以下顺序

α<β<快照

这里有一个类似的页面:@Gavin链接中没有我的问题的答案。我在提问之前看过。我假设您使用maven2(给定问题标签).Maven强烈反对这种做法,因为这会导致生成不可复制的版本。这将使将来迁移到最新Maven版本成为一个痛苦的过程。因此,我强烈反对这种做法,尽管它看起来很有用。@SamuelEUSTACHI现在我明白了重点。谢谢。不客气。关于我自己的项目之间的依赖性,我也有同样的想法。我认为风险并没有来自外部提供者的依赖性那么大。但我发现,即使在这种情况下,这也不是一个好的做法。例如,pom版本的pom也可以提供某种“自我文档”对于您的项目,能够准确地知道编译时和运行时使用的库集是非常有用的。您可能想知道这一点以便以后调试。感谢您提供有关范围的建议。从Maven开始,并不总是清楚选择哪一个选项。链接文档是Maven 2.0的设计草案。最终实现实际情况略有不同。
任何稳定项目的目标都应该是可预测的构建,而版本范围恰恰相反。
除非您更关心安全性而不是可预测的构建。如果构建被破坏,每个人都会看到它并匆忙修复。如果发现漏洞,没有人会在意。“不应该”但它将根据这个问题:我使用maven 3.5.3,它与文档相反,将snapshot视为有效版本。有任何源代码吗?源代码是明确的:(请参阅方法
ComparableVersion.StringItem.comparableQualifier(String)
)。Javadoc声明:>作为@JulienCarsique,已经回复了source is,也在文档中:您可以找到以下内容:
“alpha”<“beta”<“里程碑”<“rc”=“cr”<“snapshot”<“final”=“ga”<“sp”