文章目录
- 一、前言
- 二、依赖配置
- 1.概述
- 2.格式
- 三、依赖传递
- 1.概述
- 2.依赖冲突
- 3.可选依赖
- 4.排除依赖
- 四、依赖范围
- 1.作用范围
- 2.传递性
- 五、结语
一、前言
Maven基础中还有依赖没有讲述,这篇文章主要讲述依赖管理
二、依赖配置
1.概述
依赖指当前项目运行所需要的jar,一个项目可以设置多个依赖
2.格式
<!--设置当前项目所依赖的所有jar-->
<dependencies>
<!--设置具体依赖-->
<dependency>
<!--依赖所属群组id-->
<groupId>junit</groupId>
<!--依赖所属项目id-->
<artifactId>junit</artifactId>
<!-- 依赖版本号-->
<version>4.12</version>
</dependency>
</dependencies>
三、依赖传递
1.概述
间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
直接依赖:在当前项目中通过依赖配置建立的依赖关系
2.依赖冲突
- 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
3.可选依赖
对外隐藏当前所依赖的资源
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--设置可选依赖-->
<optional>true</optional>
</dependency>
4.排除依赖
主动断开依赖的资源,被排除的资源不用指定版本
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<exclusions>
<exclusion>
<!--设置排除依赖-->
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
四、依赖范围
1.作用范围
scope | 主代码 | 测试代码 | 打包 | 范例 |
compile(默认) | ✔ | ✔ | ✔ | log4j |
test | ✔ | junit | ||
provided | ✔ | ✔ | servlet-api | |
runtime | ✔ | jdbc |
2.传递性
行是直接依赖,列是间接依赖
compile | test | provided | runtime | |
compile | compile | test | provided | runtime |
test | ||||
provided | ||||
runtime | runtime | test | provided | runtime |
五、结语
接下来将总结生命周期与插件相关知识点