关于maven包管理版本冲突的问题

来源:互联网 发布:淘宝网购物女装冬装 编辑:程序博客网 时间:2024/04/30 15:12

maven是一个非常好的包管理软件,我们通过pom.xml的设置就可以实现jar包引入项目,不需要自己手动加入,而且在项目打包生成的时候也非常方便。


但是,在各种jar包引入的时候,可能会因为引入多个版本的jar包引起一些冲突,导致各种bug,我们当然可以利用maven自己带的命令,mvn  dependency:tree来实现依赖的展示。

但是,当项目依赖过多,或者关系非常复杂的时候,我们很难从图中找到哪些依赖的冲突,从而exclusion掉,解决包冲突。
经过一番搜索,我查到了一个比较好的idea下的插件  maven helper,可以直接显示出某个包背多次依赖,标注出版本不同导致的冲突。大家可以去安装一下,省事胜利。

对这个问题的进一步思考和解决:

通过 dependency:tree这个命令,我觉得这个插件实现的原理我有点明白了。
首先,造成包冲突的原因是同一个jar包,引入了不同版本,在执行的时候程序不知道调哪个版本。
所以,我猜测插件的实现原理是这样的,
1.需要对所引入依赖的包先进行一个遍历,将多次引入的jar包和其版本记录下来。当然,这需要对pom.xml中的信息先进行提取处理,这不是核心。
2.将相同jar包的信息存成一种数据结构,形成一个LIst,做展示用就可以了。

这里面存在的问题:有些大的jar包里会包含小的,比如日志处理等,我如何指导大的里面包含了哪些小的?

这就是我的一些思考吧。

来公司了,还发现了更厉害的操作,配置多种profile环境,直接切换,非常方便,还得多学习啊

最后来张这个插件的效果图


原创粉丝点击