面试官:maven jar包冲突如何解决?

网友投稿 754 2022-10-24

面试官:maven jar包冲突如何解决?

面试官:maven jar包冲突如何解决?

依赖仲裁

依赖仲裁就是当项目中引入的jar包,groupId (公司域名倒过来)和artifactId (功能命令)一样,但是version不一样,应该选用哪一个version?也经常被人叫做依赖冲突

最短路径原则

假如说我们现在的项目依赖关系如图?那么maven会选用st-common-lib的那个版本呢?

答案是1.1这个版本,st-web到st-common-lib(1.1)的距离为1,到st-web到st-common-lib(1.0)的距离为2,选择距离短的,即最短路径原则

如何看依赖的距离关系呢?前文说过,执行如下命令打印出全局的依赖树,层级关系特别清楚

mvn dependency:tree >

有时候明明引入对应的包了,但是类找不到,就有可能是因为版本冲突后,选择了错误的版本

依赖排除

去掉间接引入的jar包

如不想用spring boot默认提供的log,想集成第三方的log时 或者说上面依赖仲裁的第二个例子中,只想用st-common-lib的1.1版本,就可以把1.0版本排除掉

org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-logging

实用插件Maven Helper

可以在Idea中-一个插件,Maven Helper,用来分析依赖冲突超级方便

可以看到有三个单选框,依次为

Conflicts,显示项目中的所有冲突的依赖All Dependencies as List,以列表的形式显示所有的依赖All Dependencies as Tree,以树型的形式显示所有的依赖

右侧还有搜索框,这样就能查看部分依赖,当需要排除某个依赖的时候,只需要右键排除即可

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:react-essence - 一个必不可少Material Design框架
下一篇:五分钟手撸一个Spring容器(萌芽版)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~