广州网站网站建设,湖南建设人力资源网证书查询,app开发教程视频,外包如何加工资1 依赖传递
1.1 什么是依赖传递
现有Maven项目A、B、C#xff0c;如果项目B依赖项目A#xff0c;项目C依赖项目B#xff0c;则可以认为项目C依赖项目A。这就是项目依赖的传递性。 此时项目C中会存在项目A和项目B中的所有依赖。
依赖传递的作用
简化依赖导入检测依赖版本…1 依赖传递
1.1 什么是依赖传递
现有Maven项目A、B、C如果项目B依赖项目A项目C依赖项目B则可以认为项目C依赖项目A。这就是项目依赖的传递性。 此时项目C中会存在项目A和项目B中的所有依赖。
依赖传递的作用
简化依赖导入检测依赖版本
1.2 依赖传递原则
依赖是否传递和依赖范围配置有关。
依赖传递终止的条件
非compile范围进行依赖传递 compile依赖范围是可以传递的使用不能传递的范围配置如optional、test、provided
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/version!-- test范围 --scopetest/scope
/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.15/version!-- 配置了optional --optionaltrue/optional
/dependencydependencygroupIdjavax.servlet/groupIdartifactIdservlet-api/artifactIdversion2.5/version!-- provided范围 --scopeprovided/scope
/dependency依赖存在冲突
2 依赖冲突
2.1 产生原因
当一个项目直接引用或者间接引用出现了相同的jar包时就会出现相同的重复jar包即出现了jar包冲突。
2.2 Maven依赖选择原则
当出现jar包冲突时Maven会按照既定的自动选择原则处理依赖冲突自动选择原则包括两个其一是依赖路径最短优先原则其二是依赖路径长度相同时先声明优先原则。
2.2.1 原则一 第一原则依赖路径最短优先 // 依赖路径最短优先 A—B—C—D—X(version 1.5.6) A—E—X(version 1.5.8) 则A依赖于X(version 1.5.8)。
2.2.2 原则二
第二原则依赖路径长度相同时先声明优先 // 依赖路径长度相同时先声明优先 A—B—X(version 1.5.6) A—C—X(version 1.5.8) 则A依赖于X(version 1.5.6)。
2.3 手动排除依赖
推荐使用。通过exclusions排除多个冲突的依赖如下 通过exclusions排除多个冲突的依赖如下
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.4.1/version!-- 通过exclusions标签配置需要排除的依赖项 --exclusions!-- 通过exclusion标签配置某个具体排除的依赖项 --exclusion!-- 指定排除的依赖项坐标不用指定version信息 --groupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactId/exclusion/exclusions
/dependency