Maven Dependency Version 依赖版本自动升级
[1.15.0,2.0.0) x>=1.15.0 && x<2.0.0
依赖调节是为了解决版本不一致的问题(multiple versions),并采取就近原则(nearest definition)。
举例来说,A项目通过依赖传递依赖了两个版本的D:
A -> B -> C -> ( D 2.0 ) ,
A -> E -> ( D 1.0 )
复制代码那么最终A依赖的D的version将会是1.0,因为1.0对应的层级更少,也就是更近。
除了我们常用的<version>1.1.0</version>,在声明依赖版本的时候,可以通过表达式灵活地配置版本号。
例如配置jar包x的<version>标签支持如下几种语法:
1.0: 推荐依赖版本,此版本号可能会被覆盖。
复制代码还可以控制依赖的版本范围:
(,1.0]: x <= 1.0
[1.2,1.3]: 1.2 <= x <= 1.3
[1.0,2.0): 1.0 <= x < 2.0
[1.5,): x >= 1.5
复制代码同时声明多个版本范围也是可以的,只要用逗号分隔即可:
(,1.0],[1.2,): x <= 1.0 或者 x >= 1.2
复制代码当你不希望依赖某个版本的时候,可以声明为:
(,1.1),(1.1,)
举例来说,你想依赖Apache的commons-math3的最新稳定版,而且不想每次有了新的版本手动去升级pom.xml,可以使用如下<version>配置:
<dependency>
<groupId>org.apache.commons</groupId>
commons-math3</artifactId>
<version>[3.+,)</version>
</dependency>
复制代码编译项目,你会看到项目中依赖的版本为当前(2019/03/04)最新的正式版: 3.6.1。
当然,这么做是有风险的,因为自动升级版本可能引入未知的修改。
除非你信任这个项目的发布者,相信其发布的新版本都是向下兼容的,这样才能保证自动升级到最新版本以后不会出问题。
作者: 西召
链接: https://juejin.im/post/5c7d0e7c6fb9a04a01650f9d
来源: 掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
维护记录
| 时间 | 修改内容 | 原因 |
|---|---|---|
| 2026-10-09 | 修复本地 Hugo 构建的 Raw HTML 警告:代码/配置放入代码块,正文中的尖括号占位符改为行内代码;文件重命名为 maven-dependency-version.md;url 改为 maven-dependency-version;旧 url 加入 aliases;categories 改为 Java |
正文中的 HTML/XML 片段被当作原始 HTML 丢弃;文件名/URL/标题按规范调整 |