Maven依賴範圍和依賴版本衝突的解決
一、依賴範圍
1. Compile struts2-core
編譯(compile)時需要 測試時需要,,執行時需要,打包時需要
2. Provided jsp-api.jar servlet-api.jar
編譯(compile)時需要,測試(test)時也需要 ,執行時不需要,打包時不需要
3. Runtime 資料庫驅動包
編譯時不需要,測試時需要,,執行時需要,打包時需要
4. Test junit.jar
編譯時不需要,測試時需要,執行時不需要,打包也不需要
二、依賴版本衝突的解決
1、 第一宣告優先原則
<dependencies>
<!-- spring-beans-4.2.4 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<!-- spring-beans-3.0.5 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-
<version>2.3.24</version>
</dependency>
2、 路徑近者優先原則
自己新增jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
3、 排除原則
<dependency>
<
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
4、 版本鎖定原則
<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>