一、核心前置知识
Maven 生命周期(最常用 3 个):
compile:仅编译源码,不打包package:编译 + 打包(jar/war),不安装到本地仓库install:编译 + 打包 + 安装到本地仓库(本地其他项目可依赖)
二、整体编译打包(多模块项目)
适用于:父工程 + 多个子模块,一次性编译打包所有模块及依赖。
1. 仅编译所有模块
mvn compile
2. 编译 + 打包所有模块(最常用)
mvn package
✅ 生成:每个模块 target 目录下的 jar/war✅ 自动处理:模块间依赖、第三方依赖
3. 编译 + 打包 + 安装到本地仓库
mvn install
4. 跳过测试(开发必用,加速打包)
mvn package -DskipTests
-DskipTests:编译测试类,但不执行测试用例
mvn package -Dmaven.test.skip=true
-Dmaven.test.skip=true:完全跳过测试编译 + 执行(更快)
三、逐个模块编译打包(单模块 / 指定模块)
适用于:只打包某个子模块,不编译整个项目。
1. 进入模块目录执行(推荐)
# 进入子模块文件夹
cd user-service
# 仅编译
mvn compile
# 编译打包
mvn package
# 编译打包+跳过测试
mvn package -DskipTests
2. 不进入目录,指定模块打包(父工程下执行)
mvn -pl 模块名 package
示例:
mvn -pl user-service package -DskipTests
-pl = --projects:指定要打包的模块
3. 打包指定模块 + 同时打包它依赖的模块
mvn -pl user-service -am package
-am = --also-make:自动构建当前模块依赖的其他子模块
四、Maven 编译核心参数(必背)
表格
| 参数 | 作用 | 常用场景 |
|---|---|---|
-DskipTests |
跳过测试运行(仍编译测试代码) | 快速打包 |
-Dmaven.test.skip=true |
完全跳过测试(编译 + 运行都跳过) | 极速打包 |
-pl moduleName |
指定打包某个模块 | 单模块打包 |
-am |
同时打包依赖的模块 | 多模块依赖打包 |
-P prod |
指定环境配置(dev/test/prod) | 多环境打包 |
-U |
强制更新快照依赖 | 依赖更新不生效时用 |
-e |
打印详细错误堆栈 | 排查打包失败 |
-X |
调试模式(超详细日志) | 深度排查问题 |
-Dmaven.compile.fork=true |
多线程编译 | 加速大项目 |
五、高频实用命令合集(直接复制)
1. 项目整体快速打包(开发最常用)
mvn package -DskipTests
2. 整体打包 + 强制更新依赖
mvn package -U -DskipTests
3. 指定模块打包(含依赖模块)
mvn -pl order-service -am package -DskipTests
4. 生产环境打包
mvn package -P prod -DskipTests
5. 清理旧包 + 重新打包
mvn clean package -DskipTests
clean:删除 target 目录,避免旧文件冲突
六、多模块项目最佳实践
- 父工程执行 :
mvn clean package -DskipTests→ 全量打包 - 修改单个模块 :进入模块目录执行
mvn package或用-pl指定 - 依赖冲突 / 更新失败 :加
-U参数强制更新 - 打包报错 :加
-e查看错误详情
总结
- 整体打包 :
mvn package -DskipTests - 指定模块打包 :
mvn -pl 模块名 -am package - 核心加速 :
-DskipTests、-U、clean - 排查错误 :
-e、-X