共有四種解決方式:
1、第一聲明優先原則:
在pom.xml配置文件中,如果有兩個名稱相同版本不同的依賴聲明,那麼先寫的會生效。
所以,先聲明自己要用的版本的jar包即可。
2、路徑近者優先:
直接依賴優先於傳遞依賴,如果傳遞依賴的jar包版本衝突了,那麼可以自己聲明一個指定版本的依賴jar,即可解決衝突。
3、排出原則:
傳遞依賴衝突時,可以在不需要的jar的傳遞依賴中聲明排除,從而解決衝突。
例子:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
4、版本鎖定原則(最常使用)
在配置文件pom.xml中先聲明要使用哪個版本的相應jar包,聲明後其他版本的jar包一律不依賴。解決了依賴衝突。
例子:
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<hibernate.version>5.0.7.Final</hibernate.version>
<struts.version>2.3.24</struts.version>
</properties>
<!-- 鎖定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>