Maven中的依赖管理
2023-09-27 14:29:07 时间
记住一个人的好,总好过记住一个人的坏。
1. 依赖配置
依赖指当前项目运行所需的jar,一个项目可以设置多个依赖
<!-- 设置当前项目所依赖的所有jar-->
<dependencies>
<!— 设置具体的依赖-->
<dependency>
<!— 依赖所属群组id-->
<groupId>junit</groupId>
<!— 依赖所属项目id-->
<artifactId>junit</artifactId>
<!— 依赖版本号-->
<version>4.12</version>
</dependency>
</dependencies>
2. 依赖传递
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:项目的依赖如果依赖其他资源,当前项目间接依赖其他资源
2.1 依赖传递冲突问题
- 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同的层级被依赖时,配置的顺序靠前的覆盖配置顺序靠后的
- 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的(在一个
pom
中)
2.2 可选依赖
可选依赖指对外隐藏当前所以来的资源–不透明
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<optional>true</optional>
</dependency>
2.3 排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本–不需要
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
3. 依赖范围
依赖的jar默认情况可以在任何地方使用,可以通过scope
标签设定其作用范围
- 作用范围
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包(package指令范围内)
scope | 主代码 | 测试代码 | 打包 | 示例 |
---|---|---|---|---|
compole(默认) | Y | Y | Y | log4j |
test | Y | junit | ||
provided | Y | Y | servlet-api | |
runtime | Y | jdbc |
4. 依赖范围传递性
带有依赖范围的资源在进行传递时,作用范围将受到影响
到此,本章内容就介绍完啦,如果有帮助到你 欢迎点个赞👍👍👍吧!! 有问题评论区交流
相关文章
- Maven 指定范围依赖
- maven:不再支持源选项 5。请使用 6 或更高版本。
- Maven 中依赖使用的版本号
- 解决Maven依赖下载不全的问题
- 解决eclipse maven 项目重新下载包这个问题
- maven中的依赖冲突的解决
- maven依赖scope配置项讲解
- IDEA下使用Maven的test命令乱码
- Maven 依赖管理
- 使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包
- Maven的构建配置文件(Build Profiles)
- Maven导出Project依赖的jar包
- Maven入门:使用Nexus搭建Maven私服及上传下载jar包
- Maven依赖仲裁
- idea maven导入依赖过慢
- [Maven进阶]依赖管理
- maven插件的生命周期的详细说明(两)
- apache-maven-3.2.1设备
- 依赖管理——Maven仓库类型
- as中依赖管理 jcenter 和 Maven Central
- Maven依赖管理
- Maven的生命周期与插件
- 2-3. Maven依赖加载不进来?依赖加载失败?你值得掌握如何排查的方法