参考视频
1.依赖传递
依赖具有传递性
- 直接依赖:在当前项目A中通过依赖配置(配置pom.xml)建立的依赖关系
- 间接依赖:被依赖的资源B如果又依赖其他的资源C,则A与C建立间接依赖
2.依赖冲突
由于依赖具有传递性,不可避免会造成冲突。解决依赖冲突遵循以下两个原则:
- 路径优先:层级不同时,层级浅的,优先级更高
- 声明优先:层级相同时,配置顺序靠前的,优先级更高
2.1.路径优先
如下图所示,资源A有两个版本将被使用,且层级不同时:
由于资源A1.0.jar位于第二层,资源A2.0.jar位于第四层,层级越浅优先度更高,因而使用1.0版本。
2.2.声明优先
如下图所示,资源B有两个版本将被使用,层级相同时:
由于使用1.0版本的项目(上面的项目)比使用2.0版本的项目(下面的项目)更早声明,因此优先使用上面项目所使用的资源B版本,即1.0版本
可以理解为,优先保证先声明的资源正常使用。