Maven 核心知识点全总结(生命周期 / Phase / Goal / 依赖 / 命令)
Maven 核心知识点全总结(生命周期 / Phase / Goal / 依赖 / 命令)
一、Maven 三层核心结构(从大到小)
- 生命周期(Lifecycle):最大流程容器,共 3 套
- 阶段(Phase):生命周期内的有序执行节点
- 插件目标(Goal):真正执行具体任务,Maven 最小执行单位
执行一个 Phase → 自动按顺序执行前面所有 Phase → 依次执行每个 Phase 绑定的所有 Goal
二、三大生命周期
-
clean 生命周期
作用:清理项目构建产物(target 目录)
关键 Phase:clean
-
default 生命周期(核心构建流程)
执行顺序(精简):
validate → initialize → generate-sources → process-resources → compile → process-classes → test-compile → test → package → install → deploy
- site 生命周期
作用:生成项目站点文档,日常极少使用
三、阶段 Phase 与 插件目标 Goal
- 核心关系
- Phase 只是执行节点 / 入口,本身不干活
- Goal 是最小执行单元,真正完成编译、打包、清理等操作
- 一个 Phase 可以绑定 0/1/N 个 Goal
- 可直接执行 Goal,绕开生命周期:mvn compiler:compile
- 常用默认绑定
表格
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 包
- flatten-maven-plugin 目标与绑定
表格
Goal 绑定 Phase 功能
flatten process-resources 生成扁平化 pom
clean clean 清理 flatten 产物
help 无绑定 查看插件帮助
四、Maven 常用命令执行逻辑
- mvn compile
执行 default 生命周期直到 compile,自动执行前面所有 Phase
- 包含:validate → … → compile
- 不含 clean
- 不含 test、package
- mvn package
执行直到 package
- 自动执行:compile → test → package
- 不会自动 clean
- 跳过测试:-Dmaven.test.skip=true
- mvn install
- 执行:package → install
- 把 Jar 安装到 本地 Maven 仓库,供其他模块依赖
- mvn clean package / clean install
- 先执行 clean 清理旧文件
- 再执行完整构建流程
- 企业最标准、最安全用法
五、依赖作用域
控制依赖在编译、测试、运行、打包、传递中的行为
表格
scope 编译 测试 运行 打包 可传递 典型使用场景
compile ✅ ✅ ✅ ✅ ✅ 业务核心依赖(默认)
provided ✅ ✅ ❌ ❌ ❌ Servlet API、容器提供
runtime ❌ ✅ ✅ ✅ ✅ JDBC 驱动
test ❌ ✅ ❌ ❌ ❌ JUnit 测试
provided /test 不传递
compile /runtime 可传递
六、可选依赖
- 只控制依赖传递性,与 scope 无关
- 当前项目可正常使用
- 下游项目依赖你时,不会传递该依赖
- 用途:避免依赖爆炸、减少版本冲突
七、常用多模块构建命令
bash
运行
mvn clean package -am -pl yudao-server -Dmaven.test.skip=true
- clean:清理旧构建
- package:打包
- -pl yudao-server:只构建指定模块
- -am:同时构建该模块依赖的其他模块
- -Dmaven.test.skip=true:跳过测试编译与执行
八、一句话终极总结
- 生命周期定流程,Phase 定顺序,Goal 是最小执行单位
- package 自带 compile,install 自带 package,都不带 clean
- scope 控制依赖可见范围与打包行为
- optional 控制依赖是否传递
- 企业标准构建:clean package /clean install

浙公网安备 33010602011771号