我們會經常碰到這樣的問題,在pom中引入了一個jar,里面默認依賴了其他的jar包。jar包一多的時候,我們很難確認哪些jar是我們需要的,哪些jar是沖突的。此時會出現很多莫名其妙的問題,什么類找不到啦,方法找不到啦,這種可能的原因就是jar的版本不是我們所設想的版本,但是我們也不知道低版本的jar是從哪個maven里面引用的。此時我們的maven-enforcer-plugin就可以登場了。
<project> ... <build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>1.4.1</version> <executions> <execution> <id>enforce</id> <configuration> <rules> <dependencyConvergence/> </rules> </configuration> <goals> <goal>enforce</goal> </goals> </execution> </executions> </plugin> ... </plugins> </build> ... </project>
在進行mvn clean package的時候,會在console中打印出來沖突的jar版本和其父pom,如下:
Dependency convergence error for org.slf4j:slf4j-api1.6.1 paths to dependency are: [ERROR] Dependency convergence error for org.slf4j:slf4j-api:1.6.1 paths to dependency are: +-org.myorg:my-project:1.0.0-SNAPSHOT +-org.slf4j:slf4j-jdk14:1.6.1 +-org.slf4j:slf4j-api:1.6.1 and +-org.myorg:my-project:1.0.0-SNAPSHOT +-org.slf4j:slf4j-nop:1.6.0 +-org.slf4j:slf4j-api:1.6.0
這個時候,我們看一眼就知道應該把那個dependency中的哪個jar進行exclude。
這是一個小技巧,不過很管用。
轉自:https://www.cnblogs.com/f-zhao/p/6961058.html
