4. Maven中管理依赖
4.1 介绍
依赖是一个项目运行时所需要的各种资源文件的配置信息,如版本号,群组等信息
4.2 配置格式
一般是在Maven构建项目中的pom.xml文件中来进行配置,主要格式如下:
<!--所有的依赖都配置在这对dependencies标签中间-->
<dependencies>
<!--一对dependency标签就是一组具体依赖-->
<dependency>
<!--以下3种标签就是依赖的坐标-->
<groupId>xxx</groupId>
<artifactId>xxx<artifactId>
<version>xx.xx</version>
</dependency>
</dependencies>
4.3 依赖具有传递性
当引用别人项目模块依赖时且别人项目模块恰好也引用了x资源文件的依赖时,你也可以使用他所引用的x资源文件 等同于 你也有x源文件的依赖,如图
等同于
4.4 依赖关系
主要分为两种依赖关系:
- 直接依赖:pom文件中直接有具体的依赖配置
- 间接依赖:依赖信息在所依赖的项目中的pom文件中
备注: - 特殊优先:当pom文件配置重复资源依赖时(同一pom文件),后配置的后生效
- 路径优先:直接依赖优先级大于间接依赖
- 声明优先:某一资源相同层配置(同一级别,不同pom文件),先配置的先生效
4.5 依赖隐藏
当别人引用自己项目时,自己配置的依赖不想被别人看见,可以在自身pom文件中用optional标签来解决,如下:
<dependency>
<!--某个依赖坐标下加入-->
<!--true为隐藏-->
<optional>true</optional>
</dependency>
4.6 排除依赖
当你引用别人项目时不想要他所带的依赖时,可在自身pom文件中引用别人项目依赖下面添加代码进行操作,如下:
<dependency>
<!--别人项目依赖坐标下加入-->
<exclusions>
<exclusion>
<!--不想要的依赖坐标,如Junit-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
4.7 设置依赖生效范围
依赖默认工作范围为任何地方,可通过一对scope标签来进行设置想要的作用范围,作用范围主要如下:
- 主程序范围,即main目录下
- 测试程序范围,即test目录下
- 打包范围,即package指令范围下
scope标签属性与作用范围的关系:
Scope属性 | 是否作用主程序范围 | 是否作用测试程序范围 | 是否作用打包范围 |
compile默认 | 是 | 是 | 是 |
test | 否 | 是 | 否 |
provided | 是 | 是 | 否 |
runtime | 否 | 否 | 是 |
依赖传递性对作用范围的影响,了解即可
项目A间接依赖 \ 项目A直接依赖 | compile默认 | test | provided | runtime |
compile默认 | compile | test | provided | runtime |
test | 无 | 无 | 无 | 无 |
provided | 无 | 无 | 无 | 无 |
runtime | compile | test | provided | runtime |