2015-10-09 32 views
2

如果一个Maven项目可以过渡地使用一个库的多个版本,Maven的依赖关系调解将按照最接近的定义进行仲裁并在声明中进行排序。 (见docs。)为什么Maven的依赖关系调解不选择最新版本?

例如,如果A→B→X-1.0.0和A→B→C→X-2.0.0,则建筑A将使用X-1.0.0。

为什么?假设X-2.0.0增加了C使用的一些方法是合理的,所以运行A可能会产生一个运行时异常。选择最新版本会更有意义吗? (我知道你可以手动指定它。)

回答

1

假设某个2.x版本已删除 A或B所使用的某种方法也是合理的。Maven无法知道哪一个在此正确并判定最接近的定义是决胜者。如果开发人员不喜欢这种选择,他可以添加一个直接的依赖关系,就像你观察到的那样。