Maven 生命周期详解(validate → deploy)

文章目录

一、什么是 Maven 生命周期?

生命周期(Lifecycle)= 一组有顺序的构建阶段(Phase)

Maven 定义好了一个 固定顺序 的流程:

复制代码
validate → compile → test → package → verify → install → deploy

核心规则(非常重要)

执行某个阶段时,前面的所有阶段都会被自动执行

例如:

bash 复制代码
mvn package

等价于:

bash 复制代码
mvn validate compile test package

二、validate(校验阶段)

1️⃣ 作用

校验项目是否"合法、可构建"

主要做:

  • 检查 pom.xml 是否正确
  • 检查项目结构是否完整
  • 检查依赖坐标是否合法

2️⃣ 是否会编译代码?

❌ 不会

❌ 不下载依赖(除非插件需要)


3️⃣ 使用场景

  • CI 构建前的快速校验
  • 检查 pom 是否写错
bash 复制代码
mvn validate

三、compile(编译阶段)

1️⃣ 作用

编译主代码(src/main/java)


2️⃣ 实际做的事情

  • 下载依赖(scope=compile)

  • 使用 maven-compiler-plugin

  • 输出到:

    target/classes


3️⃣ 不做什么?

❌ 不编译测试代码

❌ 不运行测试


4️⃣ 使用场景

bash 复制代码
mvn compile
  • 验证代码能否通过编译
  • 开发阶段常用

四、test(测试阶段)

1️⃣ 作用

运行单元测试


2️⃣ 实际流程

  1. 编译测试代码(src/test/java)
  2. 使用 maven-surefire-plugin
  3. 执行测试用例

3️⃣ 依赖范围

  • scope=test 的依赖会生效

4️⃣ 常见选项

bash 复制代码
mvn test

跳过测试:

bash 复制代码
mvn package -DskipTests

五、package(打包阶段)

1️⃣ 作用

将项目打包成可分发的形式


2️⃣ 常见打包结果

packaging 结果
jar xxx.jar
war xxx.war
pom pom 文件

输出目录:

复制代码
target/

3️⃣ 常见插件

  • maven-jar-plugin
  • maven-war-plugin
  • spring-boot-maven-plugin

4️⃣ 使用场景(最常用)

bash 复制代码
mvn package

六、verify(校验阶段)

1️⃣ 作用(最容易被忽略)

对 package 阶段的结果进行"质量验证"


2️⃣ 通常做什么?

  • 集成测试(Integration Test)
  • 代码质量检查
  • 安全扫描
  • 覆盖率校验

3️⃣ 常用插件

  • maven-failsafe-plugin
  • jacoco-maven-plugin
  • spotbugs

4️⃣ 与 test 的区别 ⭐

阶段 目的
test 单元测试
verify 集成 / 质量 / 合规检查

七、install(安装到本地仓库)

1️⃣ 作用

将构建产物安装到本地 Maven 仓库

本地仓库路径:

复制代码
~/.m2/repository

2️⃣ 意义

  • 供 本机其他项目 使用
  • 多模块项目内部依赖

3️⃣ 使用场景

bash 复制代码
mvn install

❗ install ≠ 发布到服务器

它 只对本机生效


八、deploy(发布到远程仓库)

1️⃣ 作用

将构建产物发布到远程仓库

例如:

  • Nexus
  • Artifactory
  • Maven Central

2️⃣ 前置条件

  • 配置 distributionManagement
  • 配置账号凭证(settings.xml)

3️⃣ 使用场景

bash 复制代码
mvn deploy

👉 一般只在 CI / 发布流程 中使用


九、生命周期执行关系图

复制代码
validate
   ↓
compile
   ↓
test
   ↓
package
   ↓
verify
   ↓
install
   ↓
deploy

十、总结

需求 命令
快速校验 pom mvn validate
只编译 mvn compile
运行测试 mvn test
打包 mvn package
本地可用 mvn install
发布仓库 mvn deploy

Maven 的默认生命周期由 validate、compile、test、package、verify、install、deploy 组成。

每个阶段都有明确职责,执行某个阶段时,前面的阶段会自动执行。

package 用于生成构建产物,install 将产物安装到本地仓库,deploy 则发布到远程仓库。

相关推荐
EatFan3 小时前
Spring Boot 4 落地观察:从 yudao-cloud、matecloud、JPower 看国产脚手架的升级路线与迁移清单
java·spring boot·后端·spring cloud·微服务·后端开发·jdk 21
Maiko Star4 小时前
* LangChain 提示词模板详解:ChatPromptTemplate 的使用与高级特性
java·人工智能·langchain
现任明教教主~6 小时前
Thinkphp站群蜘蛛池SaaS系统YanyvSEO含多用户/积分/六大引擎计费/易支付对接
java·开发语言·spring
一条破秋裤7 小时前
Linux 线程创建:pthread_create 与基本回收
java·linux·运维
布吉岛的石头7 小时前
Java 程序员第 49 阶段5:BERT 预训练目标 MLM+NSP 的工程含义
java·人工智能·深度学习·bert·transformer
摇滚侠8 小时前
《On Java 中文版 基础卷》阅读笔记 对象无处不在 03
java·笔记·python
二十雨辰8 小时前
[学成在线]-01项目背景
java
弈栈录9 小时前
Java AI 应用的异步化与高并发设计
java·后端·架构
落魄实习生9 小时前
Agent Scope Java 2.x 系列【2】 ReActAgent
java·开发语言
艸肅9 小时前
Ubuntu 安装 JDK (含手动安装)
java·ubuntu·jdk