小林的艳遇
这天小林无所事事准备下班,突然听见隔壁小美在哭泣,正(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 插件来解决这个问题,好多人都在用,官网上好评如潮”
小美:“哇,这么好用,那你能教我怎么下载吗?”
小林:“当然可以啊,你可以点这个链接下载,然后在没有改 Idea 快捷键的情况下,按住 Ctrl + Alt + S 打开我们的 Settings,然后点击 Plguins ,选择 Install plguin from disk... ,选择中我们从官网下载的文件就可以啦,记得重启 Idea 哦 ”
小美:“好麻烦啊,上次项目组的王哥直接在 Idea 就在帮我装了 Lombok ,虽然我也不知道那是什么东西,但是他就是直接在 Idea 里面装的,超级厉害的”
小林:“我也会!”
- 还是一样,按住 Ctrl + Alt + S 打开我们的 Settings,选择 File -> Settings 也是可以的
- 选择 Plunins, 查询 Maven Helper,如果没有,点击 Search in repositories
- 选择 Maven Helper, 点击 Install
- 安装完毕后重启 idea
笨笨的小美不会用(Maven-Help 使用方法)
崇拜 + 1 (Idea 自带查看依赖冲突的方法)
小林 :“小美,你懂了吧,就是这样这样,那样那样,就可以解决依赖冲突啦,接下来我在教你一手,也很实用哦”
小美:“好啊,小林,你人也太好了吧”
小林:“what?这是好人卡吗?”
小林:“你这样这样,那样那样,就可以查看Maven依赖关系结构图。红色的就是依赖冲突的地方,蓝色就是正常的依赖,当然你也可以Ctrl+Alt+Shift+U,也可以查看哦”
小林:“小美,我们去吃饭?”
小美:“可以啊,可是楼下沙县关门了,我们下次吧,我先下班回家啦”
小林默默呆在原地,流下了工具人的泪水!
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。