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

相关推荐
像少年啦飞驰点、37 分钟前
零基础入门 Spring Boot:从“Hello World”到可上线微服务的完整学习指南
java·spring boot·微服务·编程入门·后端开发
眼眸流转1 小时前
Java代码变更影响分析(一)
java·开发语言
Yvonne爱编码1 小时前
JAVA数据结构 DAY4-ArrayList
java·开发语言·数据结构
阿猿收手吧!1 小时前
【C++】C++原子操作:compare_exchange_weak详解
java·jvm·c++
csdn2015_2 小时前
MyBatis Generator 核心配置文件 generatorConfig.xml 完整配置项说明
java·mybatis
追逐梦想的张小年2 小时前
JUC编程03
java·开发语言·idea
万邦科技Lafite2 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台
indexsunny2 小时前
互联网大厂Java面试实战:从Spring Boot到微服务架构的技术问答解析
java·spring boot·redis·微服务·kafka·jwt·flyway
蓁蓁啊2 小时前
C/C++编译链接全解析——gcc/g++与ld链接器使用误区
java·c语言·开发语言·c++·物联网