一:Maven依赖传递
假如有Maven项目A,项目B依赖A,项目C依赖B。那么我们可以说 C依赖A。也就是说,依赖的关系为:C—>B—>A。
那么我们执行项目C时,会自动把B、A都下载导入到C项目的jar包文件夹中。
这就是依赖的传递性。
二:依赖传递的排除
传递依赖冲突时,可以在不需要的jar的传递依赖中声明排除,从而解决冲突。 例子:
org.apache.struts
struts2-spring-plugin
2.3.24
org.springframework
spring-beans
三:依赖冲突与解决
1、第一声明优先原则: 在pom.xml配置文件中,如果有两个名称相同版本不同的依赖声明,那么先写的会生效。
所以,先声明自己要用的版本的jar包即可。
A—>E—>X(version 0.0.1)
A—>F—>X(version 0.0.2)
则在项目A的中,E、F那个在先则A依赖哪条路径的X。
2、路径近者优先:
直接依赖优先于传递依赖,如果传递依赖的jar包版本冲突了,那么可以自己声明一个指定版本的依赖jar,即可解决冲突。
A—>B—>C—>D—>E—>X(version 0.0.1)
A—>F—>X(version 0.0.2)
则A依赖于X(version 0.0.2)。
3、版本锁定原则(最常使用) 在配置文件pom.xml中先声明要使用哪个版本的相应jar包,声明后其他版本的jar包一律不依赖。解决了依赖冲突。 例子:
4.2.4.RELEASE
5.0.7.Final
2.3.24
org.springframework
spring-context
${spring.version}
关注
打赏