你并不是必须为依赖声明某个特定的版本,你可以指定一个满足给定依赖的版本界限。
例如,你可以指定你的项目依赖于JUnit的3.8或以上版本,或者说依赖于JUnit 1.2.10
和1.2.14之间的某个版本。你可以使用如下的字符来围绕一个或多个版本号,来实现版
本界限。
(, )
不包含量词
[, ]
包含量词
例如,如果你想要访问JUnit任意的大于等于3.8但小于4.0的版本,你的依赖可以
如例 9.5 “指定一个依赖界限:JUnit 3.8 - JUnit 4.0”编写:
例 9.5. 指定一个依赖界限:JUnit 3.8 - JUnit 4.0
junit
junit
[3.8,4.0)
test
如果想要依赖JUnit任意的不大于3.8.1的版本,你可以只指定一个上包含边界,
如例 9.6 “指定一个依赖界限:JUnit <= 3.8.1”所示:
例 9.6. 指定一个依赖界限:JUnit <= 3.8.1
junit
junit
[,3.8.1]ex-de
test
在逗号前面或者后面的版本不是必须的,这种空缺意味着正无穷或者负无穷。例
如,“[4.0,)”意思是任何大于等于4.0的版本,“(,2.0)”意思是任意小于2.0的版
本。“[1.2]”意思是只有版本1.2,没有其它。
注意
当声明一个“正常的”版本如JUnit 3.8.2,内部它其实被表述成“允许任
何版本,但最好是3.8.2”。意思是当侦测到版本冲突的时候,Maven会使用
冲突算法来选择最好的版本。如果你指定[3.8.2],它意味只有3.8.2会被使
用,没有其它。如果其它什么地方有一个版本指定了[3.8.1],你会得到一
个构建失败报告,告诉你有版本冲突。我指出这一点是要让你知道有这一选
项,但要保守的使用它,只有在确实需要的时候才使用。更好的做法是通
过dependencyManagement来解决冲突。