首页 > 其他 > 详细

Maven高级,依赖传递和解决冲突,版本锁定,提取统一版本号

时间:2020-09-15 20:04:37      阅读:64      评论:0      收藏:0      [点我收藏+]

一、依赖传递冲突解决

什么是依赖?

在maven的pom文件中添加三方库坐标,即引入三方依赖。

依赖传递

项目依赖了A,A依赖了B,项目自动依赖了B

依赖冲突

项目依赖了A和B,A 依赖了C-1.1、D-1.1, B依赖了C-1.2、D-1.2,E-1.2。此时C、D库存在版本冲突

解决冲突

红线代表依赖被优化(失效)

技术分享图片

 

 

 显示红色实线的代表冲突。红色虚线,告诉你同一个jar都在哪里被多次引用了。

二、maven自带调优原则

根据三方库导入顺序,自动优化jar包

 

技术分享图片

 

 

自动优化原则有两条

第一声明者优先: 跟导入依赖的顺序有关,先导入的优先级更高

第二路径近者优先,路径指的是依赖关系图中的位置

三、排除依赖

技术分享图片

 

 

 此时有重复依赖,(重复不一定冲突,版本不同会冲突

我们想排除jdbc包下的core依赖使用代码

<!--spring的jdbc包-->
<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-jdbc</artifactId>
     <version>5.1.12.RELEASE</version>
     <exclusions>
         <exclusion>
             <artifactId>spring-core</artifactId>
             <groupId>org.springframework</groupId>
         </exclusion>
     </exclusions>
</dependency>

技术分享图片

 

四、锁定版本

如果多个库,交叉导入了同一个库,意思就是多个相同依赖的版本不同,此时我们可以通过dependencyManagement锁定库的版本。

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.2.5.RELEASE</version>
            </dependency>
        </dependencies>
</dependencyManagement>
<dependencies>
        <!--spring的jdbc包  此时导入被锁定的包,不需要写版本号,若写了就以就近原则下载  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
 </dependencies>

五、提取版本号

选中版本,ctrl+alt+v,提取版本号,自动放入properties中

技术分享图片

技术分享图片

 

Maven高级,依赖传递和解决冲突,版本锁定,提取统一版本号

原文:https://www.cnblogs.com/xiaozhang666/p/13674476.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!