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

相关推荐
十六年开源服务商2 小时前
WordPress运维服务中的内容营销策略
java·运维·spring
码农胖虎-java2 小时前
【java并发编程】从源码角度彻底理解 ForkJoinPool.commonPool
java·开发语言·python
开开心心_Every2 小时前
重复图片智能清理工具:快速查重批量删除
java·服务器·开发语言·前端·学习·edge·powerpoint
Wpa.wk2 小时前
性能测试 - JMeter练习-JMeter录制Web端压测脚本操作步骤
java·前端·经验分享·jmeter·自动化
萧曵 丶2 小时前
Elasticsearch 高频面试题(高级 Java 开发版)
java·elasticsearch
xiaoliuliu123452 小时前
apache-tomcat-6.0.10使用步骤详解(附启动与部署教程)
java·tomcat·apache
Re_zero2 小时前
🍲 图解 JVM 内存模型:别背八股文了,直接进“Re-Zero 火锅店”干饭!
java·jvm
阿蒙Amon2 小时前
C#每日面试题-简述命名空间和程序集
java·面试·c#
烤麻辣烫2 小时前
Java开发手册规则精选
java·开发语言·学习