共有四種解決方式:
一、第一聲明優先原則:
在pom.xml配置文件中,若是有兩個名稱相同版本不一樣的依賴聲明,那麼先寫的會生效。
因此,先聲明本身要用的版本的jar包便可。
二、路徑近者優先:
直接依賴優先於傳遞依賴,若是傳遞依賴的jar包版本衝突了,那麼能夠本身聲明一個指定版本的依賴jar,便可解決衝突。
三、排出原則:
傳遞依賴衝突時,能夠在不須要的jar的傳遞依賴中聲明排除,從而解決衝突。
例子:spring
<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>
四、版本鎖定原則(最常使用)
在配置文件pom.xml中先聲明要使用哪一個版本的相應jar包,聲明後其餘版本的jar包一概不依賴。解決了依賴衝突。
例子:apache
<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.2四、spring4.2.四、hibernate5.0.7 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </dependencyManagement>