maven依赖传递及jar包冲突解决方案
程序员文章站
2022-05-28 12:57:06
...
依赖传递
当前项目引入了一个依赖,该依赖的依赖也会被引入项目。maven会解析直接依赖的POM,将那些必要的间接依赖,以传递依赖的形式引入到当前项目中,这种现象我们称为依赖传递。
依赖传递可能会引起jar包依赖冲突及循环依赖的问题。
依赖冲突解决
依赖调节原则
-
路径近者优先原则
按照jar包依赖的最短路径选择。当同时依赖于spring-contex和spring-webmvc时,都会传递过来 spirng-beans,那如果直接把spring-beans的依赖直接写到pom文件中,那么项目就不会再使用其他依赖传递来的spring-beans,因为自己直接在pom中定义spring-beans要比其他依赖传递过来的路径要近。
-
第一声明者优先原则
在pom文件定义依赖,以先声明的依赖为准。
比如当A依赖C,B依赖于C,在pom中先定义A则导入的jar包版本即为A依赖于C的版本,若先定义B则导入的jar包版本为B依赖于C的版本。
排除依赖
比如在依赖zookeeper的设置中添加排除依赖,排除slf4j的依赖
<dependency>
<groupId>
上一篇: Maven 依赖jar包版本冲突解决方案
下一篇: maven使用中问题解决方案