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

sno*_*ndy 19 maven-2 maven

在我的maven项目中,我使用这样的依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>[4.2.2, 5.0)</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

由于下一个主要版本(5.0)可能会更改API,我希望我的项目使用可用于分支4.x 的最新稳定版本.

今天早上的bug调查告诉我这个表达式[4.2.2,5.0]抓住了任何可用的版本.就我而言:4.3-alpha1.

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

Dun*_*nes 16

查看Maven范围选择的文档,我注意到评论:

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

除非工件版本-SNAPSHOT以此结束,否则Maven会将其视为有效的发布版本.据我所知,-alpha1对Maven没有特别的意义.这只是另一个随机限定符.

无论如何,我强烈建议您放弃版本范围.可预测的构建应该是任何稳定项目的目标,并且版本范围可以面对它.

  • `可预测的构建应该是任何稳定项目的目标,并且版本范围也是如此.除非你关注安全性而不是可预测的构建.如果构建被破坏,每个人都会看到它并赶紧修复.如果发现漏洞,则无人问津. (2认同)
  • “不应该”,但是它将根据此问题:https://issues.apache.org/jira/browse/MNG-3092 (2认同)
  • 我使用 maven 3.5.3,它与文档相反,将快照视为有效版本。 (2认同)