前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速学习Maven-Maven依赖

快速学习Maven-Maven依赖

作者头像
cwl_java
发布2019-12-25 11:17:42
8060
发布2019-12-25 11:17:42
举报
文章被收录于专栏:cwl_Java
1 什么是依赖传递

先添加 springmvc 的核心依赖的坐标

在这里插入图片描述
在这里插入图片描述

会发现出现除了 spring-webmvc 以外的其他 jar。因为我们的项目依赖 spring-webmv.jar,而spring-webmv.jar 会依赖 spring-beans.jar 等等,所以 spring-beans.jar 这些 jar 包也出现在了我们的 maven 工程中,这种现象我们称为依赖传递。从下图中可看到他们的关系:(请注意spring-beans 的版本)

在这里插入图片描述
在这里插入图片描述
2. 依赖冲突的解决

接着添加一个依赖

在这里插入图片描述
在这里插入图片描述

我们会发现这两个 jar 包同时都依赖了 spring-beans

在这里插入图片描述
在这里插入图片描述

但是spring-webmvc 依赖 spirng-beans-4.2.4spring-context 依赖 spring-beans-5.0.2,但是发现spirng-beans-4.2.4 加入到工程中

在这里插入图片描述
在这里插入图片描述

而我们希望 spring-beans-5.0.2 加入工程。这就造成了依赖冲突。解决依赖冲突有以下原则:

依赖调解原则

maven 自动按照下边的原则调解:

  • 第一声明者优先原则 在 pom 文件定义依赖,先声明的依赖为准。

测试:

如果将上边 spring-webmvcspring-context 顺序颠倒,系统将导入 spring-beans-5.0.2

分析:

由于 spring-webmvc 在前边以 spring-webmvc 依赖的 spring-beans-5.0.2 为准,所以最终spring-beans-5.0.2 添加到了工程中。

  • 路径近者优先原则 例如:还是上述情况,spring-contexspring-webmvc 都会传递过来 spirng-beans,那如果直接把 spring-beans 的依赖直接写到 pom 文件中,那么项目就不会再使用其他依赖传递来的 spring-beans,因为自己直接在 pom 中定义 spring-beans 要比其他依赖传递过来的路径要近。

在本工程中的 pom 中加入 spirng-beans-5.0.2 的依赖,根据路径近者优先原则,系统将导入spirng-beans-5.0.2

在这里插入图片描述
在这里插入图片描述
排除依赖

上边的问题也可以通过排除依赖方法辅助依赖调解,如下:比如在依赖 spring-webmvc 的设置中添加排除依赖,排除 spring-beans,下边的配置表示:依赖 spring-webmvc,但排除 spring-webmvc 所依赖的 spring-beans

在这里插入图片描述
在这里插入图片描述
锁定版本

面对众多的依赖,有一种方法不用考虑依赖路径、声明优化等因素可以采用直接锁定版本的方法确定依赖构件的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定的版本的为准添加到工程中,此方法在企业开发中常用。如下的配置是锁定了 spring-beansspring-context 的版本:

在这里插入图片描述
在这里插入图片描述

还可以把版本号提取出来,使用标签设置成变量。

在这里插入图片描述
在这里插入图片描述

注意:在工程中锁定依赖的版本并不代表在工程中添加了依赖,如果工程需要添加锁定版本的依赖则需要单独添加<dependencies></dependencies>标签,如下:

在这里插入图片描述
在这里插入图片描述

上边添加的依赖并没有指定版本,原因是已在<dependencyManagement>中锁定了版本,所以在<dependency>下不需要再指定版本。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 什么是依赖传递
  • 2. 依赖冲突的解决
  • 依赖调解原则
  • 排除依赖
  • 锁定版本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档