MAVEN 依赖的优先原则

简介: MAVEN 依赖的优先原则

MAVEN 依赖的优先原则

maven 依赖的优先原则

1. 依赖最短路径优先原则

一个项目 Demo 依赖了两个 jar 包,其中 A-B-C-X (1.0) , A-D-X (2.0)。由于 X (2.0) 路径最短,所以项目使用的是 X (2.0)。

2.pom 文件中申明顺序优先

如果 A-B-X (1.0) ,A-C-X (2.0) 这样的路径长度一样怎么办呢?这样的情况下,maven 会根据 pom 文件声明的顺序加载,如果先声明了 B,后声明了 C,那就最后的依赖就会是 X (1.0)。

3. 覆盖优先原则

子 pom 内声明的优先于父 pom 中的依赖。

实际使用

背景:FastJson 远程代码执行漏洞,攻击者可以通过提交精心构造的 JSON 数据实现远程代码执行,造成 OOM,项目中使用的 fastJson 版本 1.2.16 过低 存在该漏洞,现升级为 1.2.56

 

图 1.png

 

图 2.png


通过上面图一,图二可以看出实际项目 fastjson 属于被动依赖,项目没有主动引入。按照依赖的优先原则,

a-(durian-conf-client)-(fastjson1.2.16)

a-(rf-login)-(fastjson1.2.44)

durian-conf-client 在 rf-login 之前申明

所以最终项目使用的是 fastjson1.2.16。

最终项目申明 fastjson 1.2.56。

相关文章
|
11天前
|
Java Maven
maven依赖原则以及jar包冲突
该文介绍了Maven依赖原则:最短路径优先,申明顺序优先和覆写优先。当有冲突时,Maven选择路径最短的版本,按POM中声明顺序加载,并且子POM的依赖优先于父POM。解决冲突最佳方式是通过`mvn dependency:tree`检查依赖树并调整POM文件中的坐标顺序。
42 2
|
21小时前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入 LDAP 操作的 ldapjdk.jar 第三方库,需将 jar 文件放入 src/lib 文件夹,并在 pom.xml 的 dependencies 部分添加依赖项。
|
4天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入外部依赖,如 ldapjdk.jar,通常涉及两个步骤。首先,在 src/lib 文件夹下添加 jar 文件,然后在 pom.xml 的 dependencies 部分声明该依赖,使用 system 策略
|
11天前
|
Java 项目管理 Maven
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
Maven的聚合和继承是Java开发中重要的概念。聚合允许将多个项目组合成一个构建单元,简化多模块项目的构建过程,提高构建效率。继承则让子项目重用父项目的配置和属性,避免了重复定义,增强了项目的一致性和可维护性。通过聚合和继承,Maven为多模块项目的构建和管理提供了高效且灵活的支持,减少了配置冗余,提升了开发效率。
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
|
11天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入 LDAP 操作库 ldapjdk.jar,需将 jar 文件放入 src/lib 文件夹,并在 pom.xml 的 dependencies 部分添加依赖配置
|
11天前
|
Java Maven Spring
Maven 依赖搜索顺序
Maven在构建时按顺序搜索本地->中央仓库->已配置的远程仓库来查找依赖。若未设置远程仓库,会报错。可将默认仓库替换为阿里云仓库,通过修改settings.xml的mirrors节点或在repositories节点添加仓库地址。在pom.xml中指定依赖后,运行`mvn install`拉取。
|
11天前
|
Java Apache 项目管理
使用Maven进行Java项目构建与依赖管理
【4月更文挑战第16天】Apache Maven是Java项目的核心构建工具,它基于POM进行项目管理和构建自动化,简化构建过程并管理依赖。Maven提供标准化的目录结构、自动依赖解决、丰富的插件生态、多模块构建支持和版本管理功能。通过安装Maven、创建项目、配置依赖、构建及使用插件,开发者能高效管理Java项目,提升开发效率。了解和掌握Maven对于Java开发者至关重要。
|
11天前
|
Java 应用服务中间件 Maven
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
22 1
|
11天前
|
Java Maven
SpringMVC常用Maven POM.xml依赖包片段
SpringMVC常用Maven POM.xml依赖包片段
|
11天前
|
存储 XML Java
【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出
【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出
58 0

热门文章

最新文章

推荐镜像

更多