SpringBoot 项目 pom.xml
-----------------------------------------------------------------------------------------------------------------
SpringBoot 项目 pom.xml properties 节点详解(按功能分类,新手易懂)
<properties> 是 Maven 项目的版本统一管理节点,核心作用是「将所有依赖的版本号集中定义,避免多处重复写版本、版本不一致导致的冲突」。下面按功能模块拆解每一个配置项的作用、使用场景,结合实际开发说明核心注意点:一、基础环境配置(JDK / 编译 / 核心框架)
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<java.version>1.8</java.version> |
指定项目使用的 JDK 版本为 1.8(即 Java 8) | SpringBoot 2.7.x 最低支持 JDK 8,最高兼容 JDK 11;该配置会同步影响 Maven 编译和 SpringBoot 运行环境 |
<maven.compiler.source>8</maven.compiler.source> |
指定 Maven 编译源码的 JDK 版本为 8 | 和 java.version 保持一致,避免编译版本与运行版本不一致导致的 UnsupportedClassVersionError |
<maven.compiler.target>8</maven.compiler.target> |
指定编译后字节码的目标 JDK 版本为 8 | 同上,保证编译产物能在 JDK 8 环境运行 |
<org.springframework.boot.version>2.7.18</org.springframework.boot.version> |
SpringBoot 核心版本(2.7.18 是 2.7.x 最后一个稳定版) | 2.7.x 是长期支持(LTS)版本,兼容 Spring Cloud 2021.x,适合生产环境;若升级需注意依赖兼容性 |
<tomcat.version>9.0.96</tomcat.version> |
内置 Tomcat 容器版本 | SpringBoot 2.7.x 默认集成 Tomcat 9,该配置覆盖默认版本,修复已知漏洞(如 9.0.96 修复了多个安全漏洞) |
二、微服务 & 注册配置中心
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<spring.cloud.version>3.1.6</spring.cloud.version> |
Spring Cloud 核心版本(2021.0.6 对应 3.1.x) | 与 SpringBoot 2.7.x 配套(Spring Cloud 2021.x ↔ SpringBoot 2.6.x/2.7.x),避免版本不兼容 |
<spring.cloud.gateway.version>3.1.7</spring.cloud.gateway.version> |
Spring Cloud Gateway 网关版本 | 微服务入口,负责路由转发、限流、认证;3.1.7 修复了网关转发的多个 bug |
<com.alibaba.cloud.nacos.version>2021.0.5.0</com.alibaba.cloud.nacos.version> |
Nacos 注册 / 配置中心版本 | 阿里微服务生态核心,2021.0.5.0 适配 Spring Cloud 2021.x,支持服务注册、配置动态刷新 |
<com.alibaba.cloud.nacos.client.version>2.3.1</com.alibaba.cloud.nacos.client.version> |
Nacos 客户端版本 | 与 Nacos 服务端通信的核心依赖,需和服务端版本兼容(2.3.1 兼容 Nacos 2.x 服务端) |
<sentinel.version>1.8.6</sentinel.version> |
Sentinel 限流 / 熔断版本 | 阿里开源的微服务治理组件,用于接口限流、熔断降级,保护系统不被高并发压垮 |
<feign.core.version>13.5</feign.core.version> |
Feign 声明式 HTTP 客户端核心版本 | 微服务间调用的核心组件,简化 HTTP 请求代码(如 @FeignClient 注解) |
<feign.httpclient.version>11.10</feign.httpclient.version> |
Feign 整合 HttpClient 版本 | 替换 Feign 默认的 URLConnection,提升 HTTP 调用性能和稳定性 |
<feign.okhttp.version>13.5</feign.okhttp.version> |
Feign 整合 OkHttp 版本 | 可选的 HTTP 客户端,性能优于 HttpClient,按需启用 |
<feign.form.version>3.8.0</feign.form.version> |
Feign 支持表单提交(form-data)版本 | 解决 Feign 调用时传递表单参数的问题(如文件上传、表单提交) |
三、数据层(数据库 / ORM / 缓存 / 检索)
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<mysql.version>8.0.29</mysql.version> |
MySQL 驱动版本 | 8.0.x 适配 MySQL 8.0 数据库,需注意驱动类从 com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver |
<com.dameng.version>8.1.3.62</com.dameng.version> |
达梦数据库驱动版本 | 国产数据库,适配达梦 8.x 版本,常用于政务 / 国企项目 |
<com.kingbase8.version>8.6.0</com.kingbase8.version> |
人大金仓数据库驱动版本 | 另一款国产数据库,8.6.0 是稳定版 |
<kingbase.sqlserver.version>9.0.0</kingbase.sqlserver.version> |
金仓兼容 SQLServer 驱动版本 | 适配金仓数据库模拟 SQLServer 环境的场景 |
<kesDialect.hibernate4.version>2.0.1</kesDialect.hibernate4.version> |
金仓 Hibernate 方言版本 | 解决 Hibernate 操作金仓数据库的语法兼容问题 |
<mybaits-plus.version>3.5.3</mybaits-plus.version> |
MyBatis-Plus 版本(注意拼写错误:mybaits → mybatis) | MyBatis 增强工具,简化 CRUD 操作(如 BaseMapper、分页插件);3.5.3 是稳定版,兼容 SpringBoot 2.7.x |
<redisson.starter.version>3.17.6</redisson.starter.version> |
Redisson(Redis 客户端)SpringBoot 启动器版本 | 比 Jedis 更强大的 Redis 客户端,支持分布式锁、集合操作,3.17.6 兼容 Redis 6.x/7.x |
<elasticsearch.version>8.9.0</elasticsearch.version> |
Elasticsearch 客户端版本 | 全文检索引擎,8.9.0 是高版本,需注意客户端与服务端版本一致(避免通信协议不兼容) |
四、开发效率 & 工具类
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<org.projectlombok.version>1.18.30</org.projectlombok.version> |
Lombok 版本 | 简化实体类代码(如 @Data、@Slf4j),1.18.30 修复了与 JDK 8/11 的兼容问题 |
<cn.hutool.vsersion>5.8.37</cn.hutool.vsersion> |
Hutool 工具类版本(注意拼写错误:vsersion → version) | 国产全能工具类库,覆盖字符串、日期、加密、IO 等场景,5.8.37 是稳定版 |
<com.google.guava.version>30.1.1-jre</com.google.guava.version> |
Google Guava 工具类版本 | 谷歌开源的工具库,补充 Java 集合、缓存、并发等能力 |
<uuid-creator.version>5.3.3</uuid-creator.version> |
UUID 生成工具版本 | 比 JDK 自带的 UUID 更灵活,支持自定义规则生成唯一 ID |
<mapstruct.version>1.5.2.Final</mapstruct.version> |
MapStruct 版本 | 实体类映射工具(如 DO → DTO),编译期生成映射代码,性能优于反射(如 BeanUtils) |
<com.github.dozermapper.version>6.4.1</com.github.dozermapper.version> |
Dozer 映射工具版本 | 老牌实体映射工具,基于反射,适合简单场景(MapStruct 更推荐) |
<commons.io.version>2.7</commons.io.version> |
Apache Commons IO 版本(注意重复定义:2.5/2.7) | IO 工具类(文件读写、流操作),建议统一用 2.7 版本 |
<commons-io.version>2.5</commons-io.version> |
重复定义,需删除其中一个 | - |
<org.apache.commons.version>1.9.4</org.apache.commons.version> |
Apache Commons 核心工具版本 | 通用工具类(如字符串、集合、数学计算) |
<commons-pool2.version>2.11.1</commons-pool2.version> |
连接池工具版本 | 为 Redis、数据库等提供连接池实现,SpringBoot 底层依赖 |
<jasypt.springboot.version>3.0.5</jasypt.springboot.version> |
Jasypt 加密启动器版本 | 加密配置文件中的敏感信息(如数据库密码),3.0.5 适配 SpringBoot 2.7.x |
五、Web & 安全
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<org.springframework.security.version>5.7.12</org.springframework.security.version> |
Spring Security 版本 | 安全框架,负责认证、授权、防跨站攻击,5.7.12 是 LTS 版本,适配 SpringBoot 2.7.x |
<io.jsonwebtoken.version>0.9.1</io.jsonwebtoken.version> |
JWT 令牌生成工具版本 | 用于生成 / 解析 JWT 令牌(前后端分离认证),0.9.1 是经典版本(注意:高版本已升级为 jjwt-api) |
<snakeyaml.version>2.0</snakeyaml.version> |
YAML 解析工具版本 | SpringBoot 解析 application.yml 配置文件的核心依赖,2.0 修复了安全漏洞 |
<org.springdoc.version>1.6.6</org.springdoc.version> |
SpringDoc 版本 | 生成 OpenAPI 3.0 接口文档(替代 Swagger2),适配 SpringBoot 2.7.x |
<com.github.xiaoymin.version>4.4.0</com.github.xiaoymin.version> |
Knife4j 版本 | 基于 Swagger/OpenAPI 的接口文档增强工具,美化界面、支持导出 |
六、消息 & 任务
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<rocketmq.starter.version>2.2.3</rocketmq.starter.version> |
RocketMQ SpringBoot 启动器版本 | 集成 RocketMQ 消息队列,2.2.3 是稳定版,适配 SpringBoot 2.7.x |
<xxl-job.version>2.4.0</xxl-job.version> |
XXL-Job 分布式任务调度版本 | 替代 Quartz 的分布式定时任务框架,2.4.0 支持 SpringBoot 2.7.x |
七、文件 & 报表
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<org.apache.poi.version>4.1.2</org.apache.poi.version> |
POI 版本 | 操作 Excel/WPS 文档的核心依赖,4.1.2 支持 Excel 2007+ 格式 |
<easyexcel.verion>4.0.3</easyexcel.verion> |
EasyExcel 版本(注意拼写错误:verion → version) | 阿里开源的 Excel 操作工具,解决 POI 内存溢出问题,4.0.3 适配 SpringBoot 2.7.x |
<freemarker.version>2.3.31</freemarker.version> |
FreeMarker 模板引擎版本 | 生成动态页面、导出 Word/PDF 模板,2.3.31 是稳定版 |
<e-iceblue.spire.doc.version>13.11.2</e-iceblue.spire.doc.version> |
Spire.Doc 版本 | 操作 Word 文档的商业工具(免费版有页数限制),支持复杂文档编辑 |
<e-iceblue.spire.pdf.version>10.8.1</e-iceblue.spire.pdf.version> |
Spire.PDF 版本 | 操作 PDF 文档的工具,支持生成、编辑、转换 PDF |
<net.lingala.zip4j.version>2.9.0</net.lingala.zip4j.version> |
Zip4j 版本 | 压缩 / 解压 ZIP 文件,支持密码保护、分卷压缩 |
<commons.fileupload.version>1.5</commons.fileupload.version> |
文件上传组件版本 | 处理 HTTP 文件上传(如表单上传文件),1.5 修复了安全漏洞 |
<commons.compress.version>1.21</commons.compress.version> |
压缩工具版本 | 支持更多压缩格式(如 tar、gz) |
八、网络 & 通信
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<io.netty.version>4.1.94.Final</io.netty.version> |
Netty 网络框架版本 | 高性能 NIO 框架,RocketMQ、Elasticsearch 等底层依赖,4.1.94 是稳定版 |
<org.apache.httpcomponents.version>4.5.14</org.apache.httpcomponents.version> |
HttpClient 版本 | HTTP 客户端,用于调用外部接口,4.5.14 修复了多个安全漏洞 |
<axis.version>1.4</axis.version> |
Axis 版本 | 老旧的 WebService 框架,适配遗留系统(新系统建议用 Spring Cloud OpenFeign) |
<cxf.version>3.4.4</cxf.version> |
CXF 版本 | 新一代 WebService 框架,支持 REST/SOAP 协议 |
<commonsNet.version>3.8.0</commonsNet.version> |
Apache Commons Net 版本 | 网络工具类(如 FTP、SMTP、Telnet 客户端) |
九、日志 & 监控
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<logback.version>1.2.13</logback.version> |
Logback 日志框架版本(注意重复定义:1.2.9/1.2.13) | SpringBoot 默认日志框架,1.2.13 修复了安全漏洞,建议统一用该版本 |
<logback.version>1.2.9</logback.version> |
重复定义,需删除 | - |
<skywalking.toolkit.version>9.6.0</skywalking.toolkit.version> |
SkyWalking 监控工具包版本 | 分布式链路追踪、性能监控,9.6.0 适配 SpringBoot 2.7.x |
十、其他依赖(兼容 / 适配)
表格
| 配置项 | 含义 & 作用 | 关键说明 |
|---|---|---|
<maven.build.timestamp>yyyy-MM-dd HH:mm</maven.build.timestamp> |
构建时间戳格式 | 可在项目中引用构建时间(如 ${maven.build.timestamp}),用于版本号、文档生成 |
<com.fasterxml.jackson.datatype.version>2.13.2</com.fasterxml.jackson.datatype.version> |
Jackson 数据类型扩展版本 | JSON 序列化 / 反序列化工具,适配 Java 8 时间类型(LocalDateTime) |
<org.dom4j.version>2.1.3</org.dom4j.version> |
Dom4j 版本 | XML 解析工具,2.1.3 修复了安全漏洞 |
<jaxen.version>1.2.0</jaxen.version> |
XPath 解析工具版本 | 配合 Dom4j 解析 XML 中的 XPath 表达式 |
<pinyin4j.version>2.5.1</pinyin4j.version> |
拼音转换工具版本 | 中文转拼音(如姓名、地址转拼音) |
<jakarta-json.version>2.0.1</jakarta-json.version> |
Jakarta JSON 版本 | 适配 Jakarta EE 规范的 JSON 工具,替代老旧的 javax.json |
<wsdl4j.version>1.6.3</wsdl4j.version> |
WSDL 解析工具版本 | 解析 WebService 的 WSDL 文档 |
<commons.discovery.version>0.2</commons.discovery.version> |
服务发现工具版本 | Axis/CXF 底层依赖,用于加载配置、类查找 |
<common.fileload.version>1.3.3</common.fileload.version> |
自定义文件加载组件版本(非开源) | 项目内部封装的文件加载工具,需确保依赖包存在 |
关键问题修正(避免踩坑)
- 拼写错误:
cn.hutool.vsersion→cn.hutool.versionmybaits-plus.version→mybatis-plus.versioneasyexcel.verion→easyexcel.version
- 版本重复定义:
commons.io.version:2.5 和 2.7 重复,建议保留 2.7(新版本);logback.version:1.2.9 和 1.2.13 重复,保留 1.2.13;
- 版本兼容性:
- SpringBoot 2.7.x 不兼容 Spring Cloud 2022.x,当前
spring.cloud.version=3.1.6(2021.0.6)是匹配的; - MyBatis-Plus 3.5.3 与 SpringBoot 2.7.x 完全兼容,无需升级;
- RocketMQ Starter 2.2.3 适配 SpringBoot 2.7.x,若升级 SpringBoot 3.x 需换 2.3.x 版本。
- SpringBoot 2.7.x 不兼容 Spring Cloud 2022.x,当前
总结
<properties>核心价值是版本统一管理,避免分散定义导致的版本冲突,降低维护成本;- 该项目依赖覆盖「微服务、数据库、工具类、消息、安全、文件处理」等全场景,是典型的企业级 SpringBoot 项目配置;
- 需修正拼写错误、重复版本定义,保证版本与 SpringBoot 2.7.18 兼容,避免启动报错或运行时异常。
-----------------------------------------------------------------------------------------------------------------
