1.什么是传递依赖?
当A 依赖B、B依赖C,在A中导入B后会自动导入C,C是A的传递依赖,如果C依赖D则D也可能是A的传递依赖。
演示:
web中添加struts-spring的jar,传递依赖了spring
2.依赖范围对传递依赖的影响(了解)
依赖会有依赖范围,依赖范围对传递依赖也有影响,有A、B、C,A依赖B、B依赖C,C可能是A的传递依赖,如下图:
最左边一列为直接依赖,理解为A依赖B的范围,最顶层一行为传递依赖,理解为B依赖C的范围,行与列的交叉即为A传递依赖C的范围。
举例:
比如 A对 B 有 compile 依赖,B 对C有 runtime 依赖,那么根据表格所示A对C 有 runtime 依赖。
测试
dao依赖junit,scop为test
service依赖dao.
查看下图红色框内所示传递依赖范围:
所以maven-first所依赖的junit的jar没有加入到maven-web工程。
如果修改maven-first依赖junit的scop为compile,maven-first所依赖的junit的jar包会加入到maven-web工程中,符合上边表格所示,查看下图红色框内所示:
3.传递具有依赖性,但不是无限传递的,解决方法:
如果在依赖传递过程中,导致jar包丢失,再一次导入坐标。