4. Maven
4.1 Maven 坐标
-
组成部分:Maven 坐标由
groupId
、artifactId
、version
三部分组成,用于唯一标识资源(如 jar 包 ),方便项目定义自身或引入依赖。groupId
:定义项目所属组织名称,通常采用域名反写形式(如com.itheima
),体现组织或团队归属。artifactId
:定义项目(模块)名称,代表具体的项目或模块(如maven - project01
、hutool - all
),区分同一组织下不同项目。version
:定义项目的版本号,明确项目处于哪个开发阶段或发布版本(如1.0 - SNAPSHOT
、5.8.27
)。
4.2 Maven 项目版本分类
- SNAPSHOT(快照版本):功能不稳定,处于开发中的版本。常用于团队内部开发迭代阶段,方便及时获取最新开发成果,依赖此版本时,Maven 可能会主动更新获取最新快照 。
- RELEASE(发布版本):功能趋于稳定,当前更新停止,可用于发行的版本。代表项目已成熟,适合正式环境使用,版本发布后一般不会再随意变更内容 。
4.3 Spring Boot 基础依赖
Spring Boot 提供的 starter 依赖已集成自动配置,无需手动指定版本(由 Spring Boot 父工程统一管理),坐标如下:
-
spring-boot-starter-web
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>
Web 开发核心依赖,包含 Spring MVC、Tomcat 等。
-
spring-boot-starter-webflux
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId> </dependency>
响应式 Web 开发组件,基于 Reactor 框架。
-
spring-boot-starter-test
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope> <!-- 仅测试环境生效 --> </dependency>
测试依赖,包含 JUnit、Mockito 等工具。
-
spring-boot-devtools
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> <!-- 运行时生效,避免传递依赖 --> </dependency>
热部署工具,支持代码修改后自动重启。
-
spring-boot-starter-actuator
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>
应用监控组件,提供健康检查、指标收集等功能。
4.4 简化代码:Lombok
-
坐标:
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.38</version><optional>true</optional> <!-- 避免传递依赖 --> </dependency>
-
作用:通过注解(如
@Data
@Getter
)简化实体类代码,自动生成 getter/setter 等。
4.5 数据库与持久化
-
Druid 连接池
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version> </dependency>
阿里开发的连接池,支持监控、防 SQL 注入。
-
MyBatis 集成 Spring Boot
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version> <!-- 需与 Spring Boot 版本兼容 --> </dependency>
简化 MyBatis 配置,支持 XML / 注解方式 CRUD。
-
MySQL 驱动
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.32</version> </dependency>
Java 连接 MySQL 的 JDBC 驱动。
4.6 其他工具
-
Fastjson JSON 解析
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.56</version> </dependency>
阿里开发的 JSON 工具,用于对象与 JSON 字符串互转。
4.7 扩展:AI 与文档处理(结合 Spring AI)
-
阿里云 Spring AI Starter
<dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0</version> </dependency>
集成阿里云 AI 能力(模型调用、智能服务)。
-
Spring AI 文档解析
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-tika-document-processor</artifactId><version>0.8.1</version> <!-- 需与 Spring AI 版本匹配 --> </dependency>
结合 Apache Tika 解析 PDF、Word 等文档内容。
4.8 生命周期(标准化构建流程)
Maven 定义的阶段任务(按执行顺序):
- clean:删除
target
目录(编译 / 打包产物) - validate:校验
pom.xml
格式及依赖完整性 - compile:编译
src/main/java
为.class
文件 - test:执行
src/test/java
单元测试(需 JUnit 等框架) - package:打包为 JAR/WAR(输出到
target
目录) - verify:验证打包产物(代码检查、覆盖率报告等)
- install:安装产物到本地仓库(供本地其他项目依赖)
- site:生成项目站点文档(需额外配置)
- deploy:发布产物到远程仓库(如公司私服,供团队共享)
4.9 插件(任务执行者)
插件绑定到生命周期阶段,常用插件及坐标:
-
clean 插件(清理
target
)<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>3.2.0</version> </plugin>
-
编译插件(指定 JDK 版本)
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.11.0</version><configuration><source>17</source> <!-- 源码 JDK 版本 --><target>17</target> <!-- 编译后字节码版本 --></configuration> </plugin>
-
Spring Boot 插件(打包可执行 JAR)
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>3.2.0</version> <!-- 与 Spring Boot 版本一致 --> </plugin>
-
其他插件:
maven-jar-plugin
(打包 JAR)、maven-deploy-plugin
(部署到远程仓库)等。
4.10 仓库(依赖存储位置)
- 本地仓库:默认路径
C:\Users\用户名\.m2\repository
(可自定义,如D:\m1
),存储下载的依赖和本地install
产物。 - 远程仓库:
- 中央仓库:
https://repo.maven.apache.org
(公共依赖源) - 公司私服:如 Nexus(团队内部共享依赖)
- 框架仓库:如 Spring 仓库(提供框架专属依赖)
- 中央仓库:
Maven 优先从本地仓库获取依赖,不存在则从远程仓库下载。
4.11 maven依赖配置过程
依赖指当前项目运行所需的 jar 包,一个项目可引入多个依赖。
(1) 配置步骤
- 编写标签:在
pom.xml
中编写<dependencies>
标签,用于包裹项目所有依赖配置。 - 引入坐标:在
<dependencies>
标签内,用<dependency>
引入具体依赖坐标。 - 定义坐标信息:每个
<dependency>
需定义groupId
(组织 / 公司标识)、artifactId
(项目 / 模块标识 )、version
(版本号 ),示例:
<dependency><groupId>org.springframework</groupId><artifactId>spring - context</artifactId><version>6.1.4</version>
</dependency>
- 刷新依赖:添加完依赖坐标后,点击相应刷新按钮(不同开发工具操作有别,如 IDEA 中 Maven 窗口的刷新按钮 ),引入新添加坐标对应的 jar 包。
(2) 官网查找
若不清楚依赖坐标,可到 https://mvnrepository.com/ 搜索,该网站提供丰富开源库的 Maven 坐标信息 。
(3) 排除依赖
<exclusions><exclusion><groupId>org.springframework.ai</groupId><artifactId>spring-ai-tika-document-reader</artifactId></exclusion>
</exclusions>