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

一、依赖传递冲突解决

什么是依赖?

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

依赖传递

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

注意:父项目中的依赖有 <scope> 标签属性为   test  provided  则不会依赖传递

依赖冲突

项目依赖了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中

 

posted @ 2020-09-15 18:00  一半人生  阅读(1057)  评论(0编辑  收藏  举报