1. 问题描述
- 一些开源的Java项目对依赖有着很严格的要求,会在root模块的pom.xml文件中,使用各种maven plugin检查依赖是否规范
- apache的
maven-dependency-plugin
:可以检查是否存在unused dependency、used但未explicitly import的dependency等 org.basepom.maven
的duplicate-finder-maven-plugin
:可以查找和标记Java clapss上重复和冲突的class或resource
- apache的
- 最近的工作中,就因为引入新的依赖导致
duplicate-finder-maven-plugin
的检查未通过,关键信息如下 - 仔细研读后,总结起来就是
duplicate-finder-maven-plugin
的检查不通过(虽然是WARNING信息)- 在complile、runtime、test classpath,都发现了 重复但相同的资源
char-whitelist.yaml
,这个资源文件来自两个不同的依赖com.xxx.apm:config-loader:1.0.10
、com.xxx.metrics2:core:1.1.2
- 在complile、runtime、test classpath,都发现了重复但不同的类
com.xxx.apm.shade.jnr.unixsocket.UnixSeqPacketChannel
,这个资源文件来自两个不同的依赖com.xxx.metrics2:extension-exporter-unix-socket:1.1.2
、com.xxx:metrics4j:1.0.57
[INFO] --- duplicate-finder-maven-plugin:1.5.1:check (default) @ onequery-common --- [INFO] Checking compile classpath [INFO] Checking runtime classpath [INFO] Checking test classpath [WARNING] Found duplicate (but equal) resources in [com.xxx.apm:config-loader:1.0.10, com.xxx.metrics2:core:1.1.2]: [WARNING] char-whitelist.yaml [WARNING] Found duplicate and different classes in [com.xxx.metrics2:extension-exporter-unix-socket:1.1.2, com.xxx:metrics4j:1.0.57]: [WARNING] com.xxx.apm.shade.jnr.unixsocket.UnixSeqPacketChannel [WARNING] Found duplicate classes/resources in compile classpath. [WARNING
- 在complile、runtime、test classpath,都发现了 重复但相同的资源