第一章:Maven概述
第2章 Maven依赖管理
2.1 直接依赖
2.2 间接依赖
2.3 依赖传递
2.3.1 Jar包的分类
根据Jar包在编译、运行与打包时是否会被使用到,可以将Jar包划分为四类:
(1) 编译、运行与打包时均会使用的Jar包
大多数Jar包均属于此类。
(2) 编译、运行与打包时均不会被使用的Jar包
测试用Jar包属于此类。例如,JUnit的Jar包,spring-test的Jar包。
(3) 编译、运行时需要使用,但打包时不会使用的Jar包
Servlet API是该类型的典型Jar包。
(4) 编译时不需要,但运行、打包时需要的Jar包
JDBC驱动是该类型的典型Jar包。
2.3.2 设置依赖传递的范围
根据Jar包的不同,需要为其设置不同的传递方式,即传递范围。Maven中的依赖传递范围设置在<scope>标签中。其取值有6种:
(1) compile
第1类Jar包应设置的范围。是默认值。其会向下传递该依赖。
(2) test
第2类Jar包应设置的范围。其不会向下传递该依赖。
(3) provided
第3类Jar包应设置的范围。其不会向下传递该依赖。
(4) runtime
第4类Jar包应设置的范围。其会向下传递该依赖。
(5) system
不从本地仓库查找指定的依赖,而从<systemPath>路径查找。
(6) import
在依赖继承中使用,后面再讲。
2.4 可选传递与排除依赖
2.4.1 可选传递
设置在发送方。
2.4.2 排除依赖
设置在接收方。
2.5 依赖冲突
2.5.1 直接冲突
当前项目中直接依赖于同一个依赖的多个不同版本,后注册的依赖优先级高。
2.5.2 间接冲突
当前项目的直接依赖与间接依赖同时依赖于同一个依赖,但版本不同,此时直接依赖的优先级高。
2.6 版本号统一管理
2.7 依赖继承
2.7.1 直接继承
2.7.2 可选继承