maven导入jar包中的一些概念:
直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包。
传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去。
解决jar包冲突的方式一:
第一声明优先原则:哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。
先声明的jar包坐标下的依赖包,可以优先进入项目中。
通过上述的图片可以看到,我们在maven中分别导入了spring-context,版本为5.1.9,然后又导入了sping-beans,版本为4.3.12。但是5.1.9的版本先声明的,所以此版本的使用。
解决jar包冲突的方式二:
路径近者优先原则。直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径近的直接依赖包。
解决jar包冲突的方式三【推荐使用】:——————>这种方式我们称之为:依赖的排除
导致jar包冲突的原因也是因为maven中的jar包的依赖具有传递性。
直接排除法。
当我们要排除某个jar包下依赖包,在配置exclusions标签的时候,内部可以不写版本号。
因为此时依赖包使用的版本和默认和本jar包一样。
我们知道,spring-context和spring-beans都依赖与spring-core核心,所有项目中就有了两个spring-core,通过最上面文字的表述,我们应该使用第三种方式解决jar包冲突问题。
所以,最终的导包方式应该写成: