执行时机

生命周期validate环节。

dependencyConvergence执行逻辑

通过访问maven dependency tree生成的依赖树,存入map中,key是groupid和artifactId组合,value是依赖对象list,通过判断每个list里的版本号是否相同来判断所有依赖是否为同一个版本。

配置实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>com.alibaba:fastjson:(,1.2.60)</exclude>
<exclude>org.hibernate:hibernate-validator</exclude>
</excludes>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

快速检验

在自己分支开发完成后,执行mvn validate命令即可查看冲突信息

移除冲突jar

登陆线上机器确认冲突jar的版本,移除不是对应版本的jar,方法:Dependency Analyzer 中搜索冲突jar名,右键选择移除即可自动生成exclude内容。

参考

《重新看待Jar包冲突问题及解决方案》