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 则发布到远程仓库。

相关推荐
侠客行03171 天前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪1 天前
深入浅出LangChain4J
java·langchain·llm
老毛肚1 天前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎1 天前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
Yvonne爱编码1 天前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚1 天前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂1 天前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
fuquxiaoguang1 天前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
琹箐1 天前
最大堆和最小堆 实现思路
java·开发语言·算法
__WanG1 天前
JavaTuples 库分析
java