什么Maven冲突
Maven可以管理依赖,但也会同时代码jar依赖问题。比如某个项目,引入第三包JarA和JarB,同时 JarA依赖JarC 1.0 ,JarA依赖JarC 2.0 ,这样项目里JarC就会存在2个版本。 Maven会依赖 " 依赖路径最短优先原则 " 来决定使用哪个版本。而另外一个未被使用的就是依赖冲突。绝大多数情况冲突不会对系统产生影响,但在某些情况下会提示 “找不到类的提示”
如何解决冲突
解决依赖冲突的方法,就是使用Maven提供的 <exclusion> 标签,如:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>2.1.1.RELEASE</version>
<!--先排除-->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
</exclusions>
</dependency>
插件Maven Helper查找及解决冲突
IDE安装Maven Helper
IDE手动安装
从插件市场下载后,选择Plugins --> instll plugin form disk
使用mvn dependency命令
[groupId]:[artifactId]:[type]:[version]
输入依赖关系
mvn dependency:tree
输入依赖关系到文件
mvn dependency:tree -D outputFile=outputFile.txt
只查看依赖树中包含 groupId 为 org开头的依赖
mvn dependency:tree -Dincludes=org.\
不查看依赖树中包含 groupId 为 org开头的依赖
mvn dependency:tree -Dexcludes=org.\
清空本地依赖【在某些jar包不更新时候特别好用】,本地repository中清理这些依赖,重新从远程repository下载
mvn dependency:purge-local-repository
mvn dependency:analyze-only 分析依赖
声明且使用的依赖
未声明但使用的依赖
声明了但是没有使用的依赖