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

相关推荐
折哥的程序人生 · 物流技术专研6 分钟前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
researcher-Jiang37 分钟前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
西门吹-禅2 小时前
java springboot N+1问题
java·开发语言·spring boot
DLYSB_2 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
weixin_BYSJ19873 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
AI小码3 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
Hui Baby3 小时前
Spring Security
java·后端·spring
IT笔记4 小时前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust
我才是银古5 小时前
构建 Java GIS 工具库:从碎片化 API 到统一抽象的设计实践
java·gis·geotools·gdal·esri
TPBoreas5 小时前
配置信息防泄露方案:.env 环境隔离详解(dotenv-java)
java·开发语言