3分钟为女同事解决Maven依赖冲突,不香吗?

4,838 阅读4分钟

小林的艳遇

这天小林无所事事准备下班,突然听见隔壁小美在哭泣,正(hao)义(se)的小林过去关切的问 “小美,你怎么了?是不是被该死的王经理欺负了?”,

小美抽泣着点点头 “经理叫我把这个 Maven 的红色波浪线去掉,可是我一直去不掉。”

正(hao)义(se)的小林心想又是一次约女神吃饭的好机会,小林立马说 “交给我了,这么晚了,我弄完一起吃个饭啊?”

小美看着小林说,“你真的可以吗?”

小林拍了拍胸脯说 “男人,有什么不行的”

小美的困惑(何为依赖冲突?)

小林,看了看屏幕

小美的屏幕

很明显,就是这个 fastjson 包在捣鬼

小林冲小美笑了一笑,“小美啊,这个红色波浪线是因为依赖冲突,你看你的 fastjson 这个包,是不是显示 omitted for conflict with 1.2.47,这个意思就是你的 fastjson 包产生了冲突。我换个说法给你解释,就比如说你的项目中用了 A jar 包依赖 C jar 包, B jar 包也依赖 C jar包,Maven 就帮你下载了两个版本的 C jar 包,然后他们就产生了依赖冲突,这时Maven会依据依赖路径最短优先原则,来决定使用哪个版本的 jar 包,而另一个无用的jar包则未被使用,这就是所谓的依赖冲突。”

小美激动的望着小林,眼神里流露出一丝崇拜的眼神。

小林心里乐开了花,接着说:“其实吧,在大多数情况下,jar 包冲突是不会影响我们系统正常的运行的,但是不排除在一些极端的情景下会出现找不到类的异常 ,我们作为一名严谨的程序员(为了 KPI 考虑),一定要把这个问题解决掉”

小美同意点了点头说,“小林,你会解决吗?”

小林微微一笑,“问题不大”

来吧,展示 (初步解决依赖冲突问题)

解决依赖冲突的方法,就是使用Maven提供的 exclusion 标签,exclusion 标签需要放在 标签内部,就像下面这样:

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
 <exclusions>
  <exclusion>
   <artifactId>fastjson</artifactId>
   <groupId>com.alibaba</groupId>
  </exclusion>
 </exclusions>
</dependency>

果然问题解决

解决啦

再来一手 (批量解决依赖冲突)

小美:“小林,你太厉害了吧,我这还有个项目,你能都帮我解决下红色波浪线吗?解决完我们就去楼下的沙县小吃吃饭”

小林随意挥挥手,“小case”

小美点开了一个新的项目,小林彻底吓呆,竟然有20多处红色波浪线,小林心想 “这样一个个 exclusion,隔壁老王的孩子都能去沙县打酱油了,幸好我关注了 码儿嘟嘟骑 ,这个公众号不仅有 2020年最新的大厂面试题,还有各种电子书,技术文档,多看看这个公众号的技术文章,再也不用怕被王经理怼了,据说公众号主还是个帅哥,要是我也能成为号主那样的人就好了,升职加薪,走上人生巅峰”

呸呸呸。想歪了,还是帮小美解决问题吧。

小林 :“小美,你这个项目依赖冲突太多了,我们最好用 Maven Helper 这个 Idea 插件来解决这个问题,好多人都在用,官网上好评如潮”

Maven-Helper官方图

小美:“哇,这么好用,那你能教我怎么下载吗?”

小林:“当然可以啊,你可以点这个链接下载,然后在没有改 Idea 快捷键的情况下,按住 Ctrl + Alt + S 打开我们的 Settings,然后点击 Plguins ,选择 Install plguin from disk... ,选择中我们从官网下载的文件就可以啦,记得重启 Idea 哦 ”

小美:“好麻烦啊,上次项目组的王哥直接在 Idea 就在帮我装了 Lombok ,虽然我也不知道那是什么东西,但是他就是直接在 Idea 里面装的,超级厉害的”

小林:“我也会!”

  • 还是一样,按住 Ctrl + Alt + S 打开我们的 Settings,选择 File -> Settings 也是可以的

    安装图1
  • 选择 Plunins, 查询 Maven Helper,如果没有,点击 Search in repositories

    安装图2
  • 选择 Maven Helper, 点击 Install

安装图3
  • 安装完毕后重启 idea 安装图4

笨笨的小美不会用(Maven-Help 使用方法)

Maven Helper 使用方法

崇拜 + 1 (Idea 自带查看依赖冲突的方法)

小林 :“小美,你懂了吧,就是这样这样,那样那样,就可以解决依赖冲突啦,接下来我在教你一手,也很实用哦”

小美:“好啊,小林,你人也太好了吧”

小林:“what?这是好人卡吗?”

小林:“你这样这样,那样那样,就可以查看Maven依赖关系结构图。红色的就是依赖冲突的地方,蓝色就是正常的依赖,当然你也可以Ctrl+Alt+Shift+U,也可以查看哦”

打开依赖图 打开依赖图

小林:“小美,我们去吃饭?”

小美:“可以啊,可是楼下沙县关门了,我们下次吧,我先下班回家啦”

小林默默呆在原地,流下了工具人的泪水!

END!

本文使用 mdnice 排版