简单的来说,我的一个库需要依赖某个版本的jar,结果因为复杂的依赖关系给到我的是另一个版本的jar,解决问题的关键是:
1,不要想着Intelli idea多么牛逼,老想着图形化显示出一个漂亮的依赖树出来,那么多层的折叠树,仅仅是展开就很费工夫,更别提查找,最简单的还是mvn dependency:tree,查找不需要版本的依赖关系,这样就知道你不想要的那个版本的jar包是怎么依赖进来的,才能后续对症下药:
2,用mvn的exclusions列表列出排除项目:
<dependency>
<groupId>fm.lizhi.commons</groupId>
<artifactId>lz-commons-serviceclient</artifactId>
<version>${serviceclient.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>fm.lizhi.commons</groupId>
<artifactId>lz-commons-config</artifactId>
</exclusion>
<exclusion>
<groupId>fm.lizhi.commons</groupId>
<artifactId>lz-commons-util</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
</exclusions>
</dependency>
3,然后在外层依赖上加入需要的版本
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.1</version> </dependency>
4,最后回到IDE,问题解决了