Maven 之 依赖管理

简介: 我们开发一个工程需要用到大量得jar包,而这些jar 包就是我们所说得依赖,一个项目可以配置多个依赖。

1、依赖传递

我们来看一下今天用来演示的工程。
image.png
这个工程它运行需要用到这么多的依赖!
首先依赖,它可以设置多个,那么在设置的时候,我们就会发现一些小问题,我们会发现上图中,有些依赖它是有小箭头的,而有些它是没有的。
那这个箭头又代表了什么呢?这说明这个依赖它又依赖了别的东西。

小案例:
ssm
image.png
ssm_01_pojo
image.png
我们可以看到ssm 和 ssm_01_pojo 都引入 ssm_02_dao。
ssm_02_dao 里面是什么东西呢?
image.png
接下我们将 ssm 的 pom 文件 中 的 ssm_02_dao 注释掉。
image.png
我们再来看看有没有影响。
image.png
这里我们看到,它是没有报错的,为什么呢?
因为我们的依赖具有传递性,虽然我们的ssm 将_ssm_02_dao 注释掉了,但是 ssm_01_pojo 也导入了 _ssm_02_dao,这就是依赖的传递性。
依赖的传递性也分为三种。

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

直接依赖就是我们直接写的依赖,间接依赖就是我们写的依赖又依赖的其他的依赖。
接下来我们来讲一下特殊优先。
这里我们要了解一下说明是依赖冲突,这个问题很常见,比如 我们 都用mybatis ,你用 2.0 我用 3.0 ,这不就冲突了,那到底要用谁的呢?

这里我们用一个小案例演示一下。
image.png
上面我配置两个junit 的版本 ,右边它显示的 依赖版本是 4.10。这会不会跟位置有关系,我们将它们两个交换 一下位置。
image.png
发现,它们还真的变了,这个就说明了,当我们同一个依赖写了两个版本,它会以最后一个为准。

2、可选依赖

现在呢,我们已经知道了,依赖是有传递性的,那现在就有一个问题,我现在开发了一个模块,里面依赖了一些东西,现在呢你想用我的东西,但是我现在不想让你知道 我依赖了哪些东西,我想把这些东西隐藏起来。
为什么要这样呢?
比如,我现在用的mybatis用的是2.0版本,但是你用的是3.0 的版本,那这不就又版本冲突的问题了,所以干脆,你那里用啥我不管,但是我这里用啥隐藏起来,你那里看不到,这样不就没有冲突了。

案例:
那这个东西怎么设置呢?其实很简单。
image.png
就是这个_<_optional_></_optional>标签。
true 就是隐藏 反之就是不隐藏。
image.png
我们看这个 TeacherImpl 是不是就报错了。

3、 排除依赖

排除依赖跟可选依赖优点相似,可选依赖是自己隐藏,不对外公布。
排除依赖就是,我导入了你的依赖,而你的依赖中有写依赖是我不想要的,这个时候我就可以使用排除依赖进行排除。
我往下看看这个排除依赖如何使用。

案例 :
image.png

4、可选依赖和排除依赖的区别

image.png

相关文章
|
4天前
|
存储 安全 Java
2024ide构建maven项目是总是卡在解析Maven依赖项目 加速方案
2024ide构建maven项目是总是卡在解析Maven依赖项目 加速方案
14 4
2024ide构建maven项目是总是卡在解析Maven依赖项目 加速方案
|
7天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入外部依赖,如 LDAP 帮助库 ldapjdk.jar,通常涉及将 jar 放入 `src/lib` 并在 `pom.xml` 添加系统依赖
|
8天前
|
Java 数据库连接 数据库
在Maven或者Gradle构建配置中添加了必要的依赖
在Maven或者Gradle构建配置中添加了必要的依赖
17 1
|
14天前
|
Java 测试技术 数据库连接
maven依赖详解
maven依赖详解
30 1
|
16天前
|
Java API Maven
如何定位、解决maven依赖冲突问题
如何定位、解决maven依赖冲突问题
25 0
如何定位、解决maven依赖冲突问题
|
18天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入外部依赖,如 LDAP 操作库 ldapjdk.jar,首先将 jar 文件放入 src/lib 文件夹。接着在 pom.xml 的 dependencies 部分添加依赖配置,
|
1天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入外部库如 ldapjdk.jar,通常涉及将 jar 存放在 `src/lib` 并在 `pom.xml` 添加系统依赖。
|
1天前
|
SpringCloudAlibaba Java Maven
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
|
26天前
|
Java Maven Spring
Maven 依赖搜索顺序
Maven在构建时按顺序搜索依赖:先本地仓库,再中央仓库,接着未配置远程仓库会报错;已配置则尝试远程仓库,找到后下载至本地。为解决国内访问慢问题,可修改`settings.xml`,添加阿里云仓库镜像。在`mirrors`节点加入阿里云公共仓库或特定代理如`spring`仓库的URL。在`pom.xml`中指定依赖并运行`mvn install`。
|
1月前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入 LDAP 操作的 ldapjdk.jar 第三方库,需将 jar 文件放入 src/lib 文件夹,并在 pom.xml 的 dependencies 部分添加依赖项。