IDEA使用Maven构建项目时jar包冲突的判断和解决方法?如下图:
问题描述:
如上图所示,两个httpclient,一个4.5.2 一个4.5.3,这样算是冲突吗?
如果冲突该怎么解决?可否删掉其中一个
答
- 这不算冲突,冲突的话,会在编译或者运行是报出错误,如:IncompatibleClassChangeError: class xxxx
- 实红线表示该jar包具有多个版本,点击实红线就能看到最终引用指向(虚红线)
- 由于4.5.3版本比4.5.2版本路径更短(maven版本选择的一个策略,具体可查网络),所以被优先选择
- 解决方案就是在需要排除的pom.xml中exclude不需要的版本,如下示例:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>${aws-lambda-java-core.version}</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
答
如若是两个,加载的时候就不知道加载那个了。
答
<exclusions>
<exclusion>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
</exclusion>
</exclusions>
忽略掉其中一个