如果项目中maven依赖太多,由于还有jar之间的间接依赖,所以可能会存在依赖冲突。依赖冲突大部分都是由于版本冲突引起的,查看maven的依赖关系,可以找到引起冲突的间接依赖
如上图,通过Dependency Hierachy可以查看到间接依赖,这里slf4j-api与其他引用的版本有冲突,我们可以exclude禁用这个间接依赖,代码如下:
1 <dependency> 2 <groupId>displaytag</groupId> 3 <artifactId>displaytag</artifactId> 4 <version>1.2</version> 5 <exclusions> 6 <exclusion> 7 <groupId>org.slf4j</groupId> 8 <artifactId>jcl104-over-slf4j</artifactId> 9 </exclusion> 10 <exclusion> 11 <groupId>org.slf4j</groupId> 12 <artifactId>slf4j-log4j12</artifactId> 13 </exclusion> 14 </exclusions> 15 </dependency>
这里禁用了displaytag间接引用的两个依赖,被禁用的依赖如果没有被其他依赖引用,可以手动引入。
这样就解决了maven依赖冲突的问题。
PS: 对于有的依赖,简单的通过groupId artifactId和version无法从maven中央仓库下载,由于这些jar依赖不同的jdk,所以要加上classifier,如下:
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>