maven依賴jar包時版本衝突的解決
阿新 • • 發佈:2019-02-03
共有四種解決方式:
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>