Spring Maven 專案 pom.xml 依賴管理最佳實踐(Spring 4.3 + Hibernate 4.2 + MyBatis 整合版)
完整 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>lingdong</groupId>
<artifactId>lingdong</groupId>
<version>4.0</version>
<dependencies>
<!-- Spring Core -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.5.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.3.5.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.3.5.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.5.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.5.RELEASE</version></dependency>
<!-- Spring Security -->
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>4.2.1.RELEASE</version></dependency>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-web</artifactId><version>4.2.1.RELEASE</version></dependency>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId><version>4.2.1.RELEASE</version></dependency>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-taglibs</artifactId><version>4.2.1.RELEASE</version></dependency>
<!-- AOP -->
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.7.3</version></dependency>
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.7.3</version></dependency>
<!-- 連接池 & ORM -->
<dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency>
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.2.21.Final</version></dependency>
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>4.3.2.Final</version></dependency>
<!-- Database -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency>
<!-- JSON & Template -->
<dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf</artifactId><version>3.0.2.RELEASE</version></dependency>
<dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring4</artifactId><version>3.0.2.RELEASE</version></dependency>
<!-- Utils -->
<dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-all</artifactId><version>1.3</version></dependency>
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.20</version></dependency>
</dependencies>
</project>
版本管理建議
- 使用
<properties> 統一聲明版本號(如 spring.version、hibernate.version),便於升級維護。
- Spring 全家桶版本強制對齊,避免 4.3.x 混用 4.2.x 導致
NoSuchMethodError。
- 引入
dependencyManagement(或 Spring Boot BOM)鎖定傳遞依賴版本。
- 測試依賴
scope=test,生產打包不含。