Maven依赖顺序原则

最近学习过程中,看到了有关于Spring的各种文章,Maven常常在Spring各种框架里面运用,另外在使用Maven的过程中在pom.xml中遇到的各种错误也是令人头秃,所以会有一些小文章来总结。使用maven的程序员都会遇到一个问题,那就是maven依赖冲突的问题,这会导致ClassNotFound或者MethodNotFound这样的异常。因此懂得Maven依赖的顺序原则便尤为重要。
第一声明者优先原则
如果 a-b-c1.0 , d-e-c1.1 这样路径都一样怎么办?其实maven的作者也没那么傻,会在pom文件中申明的顺序那选,如果pom文件中先申明了a再申明了d,test项目最后依赖的会是c1.1
eg:
Maven依赖顺序原则_第1张图片
因为8.0.13版本的mysql驱动是后申明的,所以该项目最后便会依赖的是8.0.13版本

间接依赖路径最短优先
一个项目test依赖了a和b两个jar包。其中a-b-c1.0 , d-e-f-c1.1 。由于c1.0路径最短,所以项目test最后使用的是c1.0。
eg:
Maven依赖顺序原则_第2张图片
覆盖有限原则
子pom内声明的优先于父pom中的依赖

总结:
路径最短,申明顺序其次

你可能感兴趣的:(Maven)