3分钟为女同事解决Maven依赖冲突,这样操作,它不香吗?

简介: 这天小林无所事事准备下班,突然听见隔壁小美在哭泣,正(hao)义(se)的小林过去关切的问 “小美,你怎么了?是不是被该死的王经理欺负了?”,小美抽泣着点点头 “经理叫我把这个 Maven 的红色波浪线去掉,可是我一直去不掉。”

小林的艳遇

这天小林无所事事准备下班,突然听见隔壁小美在哭泣,正(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给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

相关文章
|
9月前
|
Java Maven 微服务
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的 maven 依赖
在项目中使用Swagger2工具时,需导入Maven依赖。尽管官方最高版本为2.8.0,但其展示效果不够理想且稳定性欠佳。实际开发中常用2.2.2版本,因其稳定且界面友好。以下是围绕2.2.2版本的Maven依赖配置,包括`springfox-swagger2`和`springfox-swagger-ui`两个模块。
406 0
|
8月前
|
存储 Java Maven
Maven系统级别依赖:解决部署时Jar包缺失问题
以上就是关于Maven系统级别依赖解决部署时Jar包缺失问题的解答,希望对你有所帮助。在软件开发中,遇到问题并解决问题是常态,希望你能够善用这些工具,解决你遇到的问题。
544 28
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
11月前
|
缓存 架构师 Java
Maven实战进阶(01)面试官:Maven怎么解决依赖冲突?| 有几种解决方式
本文介绍了Maven的核心功能和依赖管理技巧。Maven是基于项目对象模型(POM)的构建工具,具备跨平台、标准化、自动化等特性。其三大核心功能为依赖管理、仓库管理和项目构建。依赖管理通过pom.xml文件引入第三方组件并自动下载;仓库管理涉及中央仓库、私服和本地仓库;项目构建则通过生命周期管理编译、测试、打包等流程。文章还详细讲解了依赖冲突的解决方法,包括默认规则、手工排除和版本指定等策略。
|
12月前
|
缓存 Java Maven
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法!在处理Maven项目问题时,首先检查Maven配置是否正确。接着通过“File--Invalidata Caches”清除IDEA缓存并重启。使用Maven命令`mvn dependency:purge-local-repository`和`mvn dependency:resolve`清除本地依赖缓存。最后,在Terminal中输入`mvn clean install`完成构建。
3638 1
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
|
Java Maven
maven打瘦包,且只打入部分想打入的依赖瘦包
maven打瘦包,且只打入部分想打入的依赖瘦包 设计 工程结构分析 环境管理 城市资源 安全工程 工程管理
280 10
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
2090 3
|
Java Maven
Maven 依赖管理
Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。
433 5
|
Java Maven
Maven 引入外部依赖
如果我们需要引入第三方库文件到项目,该怎么操作呢?
268 5

推荐镜像

更多