【Maven】pom.xml 超全面详解(核心结构+所有常用依赖)

0 阅读3分钟

前言

Maven——pom.xml 核心结构与常用依赖详解

一、概念

pom.xml(Project Object Model)是Maven项目的核心配置文件,通过XML结构描述项目的依赖、构建、继承等信息。

以下是核心组成部分:

1. 项目基本坐标

modelVersion:POM模型版本,固定为4.0.0(Maven 2/3通用)。

groupId:组织标识(如com.example),对应项目包结构。

artifactId:项目标识(如demo),对应项目名称。

version:版本号(如1.0.0-SNAPSHOT),SNAPSHOT表示开发版。

packaging:打包方式(jar/war/pom等,默认jar)。

name/description:项目名称和描述(可选)。

2. 属性配置(properties)

● 定义全局变量(如依赖版本号),通过**${xxx}**引用,方便统一管理。

● 示例:<java.version>17</java.version>

3. 依赖声明(dependencies)

● 核心部分,声明项目所需依赖,包含:

groupId/artifactId/version:依赖坐标。

scope:依赖作用域(compile/test/provided/runtime/system)。

exclusions:排除传递性依赖(解决冲突)。

4. 依赖管理(dependencyManagement)

● 统一管理依赖版本(不实际引入),子项目可继承,避免版本冲突。

● 常用于父POM,定义版本后,子POM声明依赖时无需写version。

5. 构建配置(build)

plugins:配置构建插件(如maven-compiler-plugin、spring-boot-maven-plugin)。

resources:指定资源文件目录(如src/main/resources)。

finalName:打包后的文件名(可选)。

6. 继承与聚合

parent:指定父POM(继承依赖、插件配置),如Spring Boot项目继承spring-boot-starter-parent。

modules:多模块项目中声明子模块(聚合构建)。

7. 仓库配置(repositories/pluginRepositories)

● 指定依赖/插件的下载仓库(如Maven中央仓库、阿里云镜像)。


二、常用依赖及功能

以下按场景分类,整理Maven项目中最常用的依赖及其功能:

1. Web开发

spring-boot-starter-web(org.springframework.boot)

○ 功能:Spring Boot Web开发核心依赖,包含Spring MVC、Tomcat容器、Jackson JSON处理等。

spring-boot-starter-webflux(org.springframework.boot)

○ 功能:响应式Web开发依赖,基于Netty,支持非阻塞I/O。

2. 数据库与持久层

mysql-connector-j(com.mysql)

○ 功能:MySQL JDBC驱动,用于连接MySQL数据库。

mybatis-spring-boot-starter(org.mybatis.spring.boot)

○ 功能:MyBatis整合Spring Boot,简化SQL映射、数据库操作。

spring-boot-starter-data-jpa(org.springframework.boot)

○ 功能:Spring Data JPA支持,基于Hibernate,简化ORM操作。

druid-spring-boot-starter(com.alibaba)

○ 功能:阿里巴巴Druid数据库连接池,提供监控、SQL优化等功能。

3. 工具类库

lombok(org.projectlombok)

○ 功能:通过注解(如@Data、@Slf4j、@Builder)简化Java代码,消除样板代码。

hutool-all(cn.hutool)

○ 功能:国产Java工具库,涵盖字符串、集合、日期、加密等通用功能。

guava(com.google.guava)

○ 功能:Google工具库,提供增强集合、缓存、并发工具等。

commons-lang3(org.apache.commons)

○ 功能:Apache Commons Lang,补充JDK字符串、数字、对象等工具类。

4. 测试框架

spring-boot-starter-test(org.springframework.boot

○ 功能:Spring Boot测试依赖,包含JUnit 5、Mockito、AssertJ等测试工具。

junit-jupiter(org.junit.jupiter)

○ 功能:JUnit 5测试框架核心,用于编写单元测试。

mockito-core(org.mockito)

○ 功能:Mock框架,用于模拟依赖对象,隔离测试。

5. 日志框架

slf4j-api(org.slf4j)

○ 功能:日志门面,统一日志接口,配合Logback/Log4j2使用。

logback-classic(ch.qos.logback)

○ 功能:Logback日志实现(Spring Boot默认),性能优于Log4j。

log4j2-spring-boot-starter(org.springframework.boot)

○ 功能:Log4j2日志实现,支持异步日志,适合高并发场景。

6. JSON处理

jackson-databind(com.fasterxml.jackson.core)

○ 功能:Jackson JSON库(Spring Boot默认),用于JSON序列化/反序列化。

gson(com.google.code.gson)

○ 功能:Google Gson库,简洁的JSON处理工具。

7. 其他常用

spring-boot-starter-aop(org.springframework.boot)

○ 功能:Spring AOP支持,用于面向切面编程(如日志、事务)。

spring-boot-starter-cache(org.springframework.boot)

○ 功能:Spring Cache抽象,支持Redis、Caffeine等缓存实现。

validation-api(javax.validation)+ hibernate-validator(org.hibernate.validator)

○ 功能:参数校验,如@NotNull、@Size等注解。