傳遞依賴是maven最有特色的、最為方便的優點之一,可以省了很多配置。如a 依賴 b,b 依賴c 默認 a也會依賴 c。但是也會帶來隱患,如版本沖突。當然maven也考慮到解決辦法,可以使用exclusions來排除相應的重復依賴。
但是我們還會遇到一個嚴重的問題,那就是,我怎么知道是哪個包的傳遞依賴產生的沖突 ?那該怎么辦呢?當然,maven也會有相應的解決方案。
首先,你要在pom.xml中加上maven-project-info-reports-plugin插件。
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>
maven-project-info-reports-plugin
</artifactId>
</plugin>
</reporting>
然后再執行:mvn project-info-reports:dependencies 。生成項目依賴的報表,這樣你就能夠在報表中找出你版本沖突的相關性依賴了。如出現OutOfMemoryError錯誤,在系統環境中加入參數 MAVEN_OPTS=-Xmx512m
最后在相應的dependency中加上exclusions來排除相關的傳遞依賴。
例:
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.1</version>
<exclusions>
<exclusion>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>