Maven 核心知识点全总结(生命周期 / Phase / Goal / 依赖 / 命令)

Maven 核心知识点全总结(生命周期 / Phase / Goal / 依赖 / 命令)

一、Maven 三层核心结构(从大到小)

  1. 生命周期(Lifecycle):最大流程容器,共 3 套
  2. 阶段(Phase):生命周期内的有序执行节点
  3. 插件目标(Goal):真正执行具体任务,Maven 最小执行单位

执行一个 Phase → 自动按顺序执行前面所有 Phase → 依次执行每个 Phase 绑定的所有 Goal


二、三大生命周期

  1. clean 生命周期

    作用:清理项目构建产物(target 目录)

    关键 Phase:clean

  2. default 生命周期(核心构建流程)

执行顺序(精简):

validate → initialize → generate-sources → process-resources → compile → process-classes → test-compile → test → package → install → deploy

  1. site 生命周期

作用:生成项目站点文档,日常极少使用


三、阶段 Phase 与 插件目标 Goal

  1. 核心关系
  • Phase 只是执行节点 / 入口,本身不干活
  • Goal 是最小执行单元,真正完成编译、打包、清理等操作
  • 一个 Phase 可以绑定 0/1/N 个 Goal
  • 可直接执行 Goal,绕开生命周期:mvn compiler:compile
  1. 常用默认绑定

表格

Phase 对应插件 Goal 功能
clean maven-clean-plugin:clean 清理 target
compile maven-compiler-plugin:compile 编译主代码
test-compile maven-compiler-plugin:testCompile 编译测试代码
test maven-surefire-plugin:test 执行单元测试
package maven-jar-plugin:jar 打成 Jar 包

  1. flatten-maven-plugin 目标与绑定

表格

Goal 绑定 Phase 功能
flatten process-resources 生成扁平化 pom
clean clean 清理 flatten 产物
help 无绑定 查看插件帮助


四、Maven 常用命令执行逻辑

  1. mvn compile

执行 default 生命周期直到 compile,自动执行前面所有 Phase

  • 包含:validate → … → compile
  • 不含 clean
  • 不含 test、package
  1. mvn package

执行直到 package

  • 自动执行:compile → test → package
  • 不会自动 clean
  • 跳过测试:-Dmaven.test.skip=true
  1. mvn install
  • 执行:package → install
  • 把 Jar 安装到 本地 Maven 仓库,供其他模块依赖
  1. mvn clean package / clean install
  • 先执行 clean 清理旧文件
  • 再执行完整构建流程
  • 企业最标准、最安全用法

五、依赖作用域

控制依赖在编译、测试、运行、打包、传递中的行为

表格

scope 编译 测试 运行 打包 可传递 典型使用场景
compile ✅ ✅ ✅ ✅ ✅ 业务核心依赖(默认)
provided ✅ ✅ ❌ ❌ ❌ Servlet API、容器提供
runtime ❌ ✅ ✅ ✅ ✅ JDBC 驱动
test ❌ ✅ ❌ ❌ ❌ JUnit 测试

provided /test 不传递

compile /runtime 可传递


六、可选依赖 true

  • 只控制依赖传递性,与 scope 无关
  • 当前项目可正常使用
  • 下游项目依赖你时,不会传递该依赖
  • 用途:避免依赖爆炸、减少版本冲突

七、常用多模块构建命令

bash

运行

mvn clean package -am -pl yudao-server -Dmaven.test.skip=true

  • clean:清理旧构建
  • package:打包
  • -pl yudao-server:只构建指定模块
  • -am:同时构建该模块依赖的其他模块
  • -Dmaven.test.skip=true:跳过测试编译与执行

八、一句话终极总结

  1. 生命周期定流程,Phase 定顺序,Goal 是最小执行单位
  2. package 自带 compile,install 自带 package,都不带 clean
  3. scope 控制依赖可见范围与打包行为
  4. optional 控制依赖是否传递
  5. 企业标准构建:clean package /clean install
posted @ 2026-07-11 11:19  liftsail  阅读(16)  评论(0)    收藏  举报