maven标签及版本冲突问题

67 阅读1分钟

1. dependcies 和 dependencyManagement标签

差异:

  1. 结构上:而这实际上是一种逻辑上的继承关系,dependcies中的组件未指定版本时,会继承 dependencyManagement 指明的版本;
  2. 行为上:dependencyManagement 只是一个声明,并不是真的添加了一个依赖;

参考:

Maven dependencyManagement vs. dependencies Tags

2. 在版本冲突时会选择那个版本的依赖?

选取是会采用最近优选原则:

  1. 路径短的优先,流入A->B->C->D1.0 和 A->E->D 2.0对比,就会优先选用2.0的版本,因为路径最短;
  2. 同级时,先声明的优先;

可以使用标签<exclusion>排除冲突的依赖;

可以使用标签<optional>使依赖变得可选

参考:

Introduction to the Dependency Mechanism