1、什么是依存冲突
Maven是一个有用的依赖性管理工具,但更好的也不完美。 Maven的依赖机制导致Jar包冲突。 举个例子,现在你的项目使用了两个Jar包: a和b。 现在,a必须依赖于另一个Jar包c,b也必须依赖于c。 但是,a依赖的c的版本是1.0,b依赖的c的版本是2.0。 此时,Maven会将此1.0和2.0下载到您的项目中,以确保您的项目具有不同版本的c。 此时,Maven将根据最短的优先级确定要使用哪个版本的Jar软件包,而不使用另一个不必要的Jar软件包。 这叫做依赖冲突。
由于Maven选择了始终使用的Jar包,因此在大多数情况下,依赖关系冲突可能不会影响系统。 但是,因为不排除在特定的条件下找不到类似物的异常,所以只要有依赖的冲突,我认为最好解决。 不要给系统留下危险。 2 .解决办法
要解决依赖关系冲突,请使用Maven提供的标记。 标签必须位于标签的内部,如下所示
log4j-core本身依赖于log4j-api,但其他模块也依赖于log4j-api,并且两个log4j-api的版本不同,因此Maven将log4j-core所依赖的log4j-api标签排除在外 换句话说,我们的项目只有一个log4j-api版本。 3、maven助手
看到这里,也许会有疑问。 如何知道自己的项目中依赖的Jar软件包发生冲突? 一个名为Maven Helper的英特尔ijideidea插件解决了这个问题。 插件的安装方法与我无关。 因为你有Maven,所以我相信你也会安装插件。
安装插件后,如果打开pom.xml文件,下面将添加Dependency Analyzer选项
打开此选项
找到冲突,右键单击,然后选择" Exclude "以排除冲突版本的Jar包。
4 .小技术
除了使用Maven辅助对象来显示依赖关系冲突外,还可以使用IDEA提供的Maven依赖关系结构图来打开Maven窗口,选择Dependencies并单击其图标,或者单击快捷键( Ctrl+Alt+Shift+U )
在图中可以看到一些红色实线。 这些红色实线依赖碰撞,蓝色实线依赖正常。
如果你觉得文章很好,就看看你弟弟。 更多的内容陆续投稿。 最后,共享面试宝典“Java核心知识点整理. pdf”,涵盖了JVM、锁、高同时、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等。 私信回答“资料”取得免费接收方式。