Jar包管理

Maven依赖进阶

扶醉桌前 提交于 2019-11-28 19:57:05
使用maven的程序员都会遇到一个问题,那就是maven依赖冲突的问题,这会导致ClassNotFound或者MethodNotFound这样的异常。其实只要明白maven依赖的根本性的原则就不怕这样的问题了。 一、maven依赖原则 1.间接依赖路径最短优先 一个项目test依赖了a和b两个jar包。其中a-b-c1.0 , d-e-f-c1.1 。由于c1.0路径最短,所以项目test最后使用的是c1.0。 2.pom文件中申明顺序优先 有人就问了如果 a-b-c1.0 , d-e-c1.1 这样路径都一样怎么办?其实maven的作者也没那么傻,会以在pom文件中申明的顺序那选,如果pom文件中先申明了d再申明了a,test项目最后依赖的会是c1.1 所以maven依赖原则总结起来就两条: 路径最短,申明顺序其次 。 二、如何解决Jar冲突 遇到冲突的时候第一步要找到maven加载的到时是什么版本的jar包。通过dependency:tree查看依赖树。 [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ web-hsf --- [INFO] com.lubby:web-hsf:war:0.0.1-SNAPSHOT [INFO] +- org.apache.geronimo.specs:geronimo