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。

相关文章
|
3天前
|
存储 Java Maven
Maven依赖全爆红,一刷新就JAVA_HOME environment variable is not defined correctlyThis environment variable is
Maven依赖全爆红,一刷新就JAVA_HOME environment variable is not defined correctlyThis environment variable is
|
4天前
|
Java Maven
SpringBoot第一次导入项目,Maven依赖全爆红,该怎样解决,idea2019.3版本,必须用application2.7.6或者以下
SpringBoot第一次导入项目,Maven依赖全爆红,该怎样解决,idea2019.3版本,必须用application2.7.6或者以下
|
2天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入 LDAP 操作的 ldapjdk.jar(版本 1.0)作为系统依赖,需在 `pom.xml` 添加 `<dependencies>` 元素
|
4天前
|
IDE Java Apache
如何使用Maven管理Java项目依赖
如何使用Maven管理Java项目依赖
|
4天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入外部库如 ldapjdk.jar,需创建 `lib` 文件夹,将 jar 放入。
|
6天前
|
JavaScript Java Maven
理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies
理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies
23 1
|
8天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入外部库如 ldapjdk.jar,需将其置于`src/lib`并添加到`pom.xml`的`dependencies`中
|
2天前
|
IDE Java Maven
如何使用Maven管理Java项目依赖
如何使用Maven管理Java项目依赖
|
4天前
|
IDE Java Maven
Unable to import Maven project,Maven依赖全爆红的问题解决
Unable to import Maven project,Maven依赖全爆红的问题解决
|
6天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入外部库如 ldapjdk.jar,需创建 `lib` 文件夹,将 jar 放入。