maven依赖原则以及jar包冲突

简介: 该文介绍了Maven依赖原则:最短路径优先,申明顺序优先和覆写优先。当有冲突时,Maven选择路径最短的版本,按POM中声明顺序加载,并且子POM的依赖优先于父POM。解决冲突最佳方式是通过`mvn dependency:tree`检查依赖树并调整POM文件中的坐标顺序。

一、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中的依赖。

二、如何解决jar冲突

遇到冲突的时候第一步要找到maven加载的到时是什么版本的jar包,通过们mvn dependency:tree查看依赖树,通过maven的依赖原则来调整坐标在pom文件的申明顺序是最好的办法。

目录
相关文章
|
24天前
|
存储 安全 Java
2024ide构建maven项目是总是卡在解析Maven依赖项目 加速方案
2024ide构建maven项目是总是卡在解析Maven依赖项目 加速方案
39 4
2024ide构建maven项目是总是卡在解析Maven依赖项目 加速方案
|
8天前
|
Java Maven
Maven 引入外部依赖
在Maven项目中引入外部库如ldapjdk.jar,需创建`src/lib`并放jar,接着在`pom.xml`的`<dependencies>`添加系统依赖
|
11天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入 LDAP 帮助库 ldapjdk.jar,需将 jar 放入 `src/lib`,然后在 `pom.xml` 的 `<dependencies>` 部分添加系统依赖,
|
14天前
|
存储 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
|
15天前
|
Java Maven
SpringBoot第一次导入项目,Maven依赖全爆红,该怎样解决,idea2019.3版本,必须用application2.7.6或者以下
SpringBoot第一次导入项目,Maven依赖全爆红,该怎样解决,idea2019.3版本,必须用application2.7.6或者以下
|
13天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入 LDAP 操作的 ldapjdk.jar(版本 1.0)作为系统依赖,需在 `pom.xml` 添加 `<dependencies>` 元素
|
15天前
|
IDE Java Apache
如何使用Maven管理Java项目依赖
如何使用Maven管理Java项目依赖
|
15天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入外部库如 ldapjdk.jar,需创建 `lib` 文件夹,将 jar 放入。
|
17天前
|
JavaScript Java Maven
理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies
理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies
79 1
|
19天前
|
Java Maven
Maven 引入外部依赖
在 Maven 项目中引入外部库如 ldapjdk.jar,需将其置于`src/lib`并添加到`pom.xml`的`dependencies`中