如果項目中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>