前言
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}引用,方便统一管理。
● 示例:17
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等注解。