Maven 常用命令完整版速查表
引言:Maven 作为 Java 后端开发的核心构建工具,贯穿项目编译、测试、打包、依赖管理全流程。日常开发中,熟练运用 Maven 命令能大幅提升开发效率,避免因命令不熟悉、参数使用不当导致的构建失败。本文整理了 Maven 全场景常用命令,涵盖核心生命周期、依赖管理、测试打包、项目辅助等模块,重点补充了依赖清理的高级参数,所有命令可直接复制执行,适配 Java 后端高频开发场景,新手可收藏备查,老鸟可快速检索。
一、核心生命周期命令
Maven 三大核心生命周期(clean、default、site),其中 default 生命周期是日常开发最常用的,以下命令覆盖从清理到部署的全流程,建议熟练掌握。
| 命令 | 作用 | 常用场景 | 补充说明 |
|---|---|---|---|
| mvn clean | 删除 target 构建目录 | 重新构建前清理旧产物 | 默认删除 target,无额外参数,避免旧产物干扰新构建 |
| mvn compile | 编译 src/main/java 主代码 | 快速检查语法错误、验证代码编译可行性 | 编译后字节码输出到 target/classes 目录 |
| mvn test | 编译测试代码 + 执行单元测试 | 验证测试用例有效性、排查代码逻辑问题 | 依赖 maven-surefire-plugin 插件,测试报告存于 target/surefire-reports |
| mvn package | 编译 → 测试 → 打包(jar/war) | 生成可部署包,用于项目部署、测试环境验证 | 包文件存于 target 目录,默认生成 jar(普通项目)/war(web项目) |
| mvn install | 打包后安装到本地 Maven 仓库 | 本地多模块项目依赖、自定义依赖复用(如自己开发的工具包) | 本地仓库默认路径:~/.m2/repository,安装后其他本地项目可直接依赖 |
| mvn deploy | 将包上传到远程私服/中央仓库 | 团队共享依赖(如项目公共组件、工具类) | 需在 pom.xml 中配置远程仓库地址(url、账号密码),否则无法上传 |
| mvn validate | 校验 POM 配置、项目结构完整性 | 构建前快速检查配置错误(如依赖缺失、POM 语法错误) | 生命周期初始阶段,执行速度快,可快速排查基础配置问题 |
| mvn verify | 执行集成测试 + 校验包质量 | 正式部署前验证包有效性(如集成测试是否通过、包是否符合规范) | 依赖 maven-failsafe-plugin 插件,集成测试类需以 *IT 结尾 |
常用组合命令(直接复制,日常开发高频)
日常开发中,单独执行单个命令场景较少,以下组合命令覆盖80%的构建场景,建议直接复制使用:
bash
# 标准构建(清理→打包→安装),跳过测试(加速构建,避免测试耗时)
mvn clean install -DskipTests
# 强制更新快照依赖 + 构建(依赖快照版本不更新时使用,如开发中的公共组件)
mvn clean install -U -DskipTests
# 只打包不安装(生成部署包,用于服务器部署,无需安装到本地仓库)
mvn clean package -DskipTests
# 完整构建(含测试,用于正式发布前验证,确保测试用例全部通过)
mvn clean install
二、依赖管理命令
依赖管理是 Maven 的核心功能之一,日常开发中经常遇到依赖冲突、依赖损坏、依赖缺失等问题,以下命令可快速排查和解决这些问题。
基础依赖命令(必会)
| 命令 | 作用 | 示例 |
|---|---|---|
| mvn dependency:tree | 查看依赖树,排查依赖冲突、传递依赖 | mvn dependency:tree(输出到文件:-DoutputFile=deps.txt,方便后续分析) |
| mvn dependency:list | 列出项目所有直接/间接依赖,清晰查看依赖版本 | mvn dependency:list |
| mvn dependency:analyze | 分析未使用、缺失的依赖,优化 POM 配置 | mvn dependency:analyze(可排查出冗余依赖,减少项目体积) |
| mvn dependency:copy-dependencies | 将所有依赖 jar 复制到指定目录,方便手动引用 | mvn dependency:copy-dependencies -DoutputDirectory=lib(复制到项目根目录 lib 文件夹) |
| mvn dependency:get | 手动下载指定 GAV 依赖到本地仓库,解决依赖下载失败问题 | mvn dependency:get -Dartifact=org.springframework:spring-core:5.3.23(指定 groupId:artifactId:version) |
dependency:purge-local-repository
本地依赖经常出现损坏、版本错乱等问题,导致构建失败,dependency:purge-local-repository 是清理本地依赖的核心命令,以下高级参数可精准控制清理范围和行为,必记!
| 参数 | 作用 | 完整命令示例 | 使用场景 |
|---|---|---|---|
| 默认(无参数) | 删除当前项目所有依赖,自动重新下载 | mvn dependency:purge-local-repository | 依赖损坏、版本错乱,需完全重置依赖(如构建时报依赖找不到、依赖校验失败) |
| -DreResolve=false | 只删除依赖,不重新下载 | mvn dependency:purge-local-repository -DreResolve=false | 仅清理旧依赖,后续手动控制下载时机(如网络不佳时,先清理再手动下载) |
| -DactTransitively=false | 仅删除直接依赖,不删除传递依赖 | mvn dependency:purge-local-repository -DactTransitively=false | 只想重置直接依赖(如自己配置的依赖),保留传递依赖(避免重复下载,节省时间) |
| -DmanualInclude="G:A" | 精确指定要删除的单个/多个依赖 | 单个:mvn dependency:purge-local-repository -DmanualInclude="junit:junit" 多个:mvn dependency:purge-local-repository -DmanualInclude="junit:junit,org.slf4j:slf4j-api" | 特定依赖损坏(如某个 jar 包损坏),无需清理所有依赖,精准定位,节省时间 |
依赖清理组合命令(实用版,直接复制)
结合高级参数,整理了4个高频依赖清理场景的组合命令,覆盖大部分依赖问题排查场景:
bash
# 1. 只删除不下载(最常用,清理后手动控制下载)
mvn dependency:purge-local-repository -DreResolve=false
# 2. 精确删除指定依赖 + 不自动下载(精准清理,避免影响其他依赖)
mvn dependency:purge-local-repository -DmanualInclude="com.alibaba:fastjson" -DreResolve=false
# 3. 清理直接依赖 + 重新构建(重置直接依赖,保留传递依赖,加速构建)
mvn dependency:purge-local-repository -DactTransitively=false clean install
# 4. 清理所有依赖 + 重新下载 + 构建(一键修复所有依赖问题,适合依赖完全错乱时)
mvn dependency:purge-local-repository clean install
三、测试相关命令(含高级用法)
单元测试、集成测试是保证代码质量的关键,以下命令可灵活控制测试执行,适配不同开发场景(如跳过测试、执行单个测试用例)。
| 命令/参数 | 作用 | 示例 |
|---|---|---|
| mvn test | 执行所有单元测试,验证代码逻辑正确性 | mvn test |
| -Dtest=测试类名 | 运行单个测试类,排查特定测试类的问题 | mvn -Dtest=UserServiceTest test(UserServiceTest 为测试类名) |
| -Dtest=测试类名#方法名 | 运行单个测试方法,精准排查某个测试方法的问题 | mvn -Dtest=UserServiceTest#testGetById test(testGetById 为测试方法名) |
| -DskipTests | 跳过测试执行,仍编译测试代码(保留测试代码编译校验) | mvn clean install -DskipTests(日常开发加速构建,不影响测试代码编译) |
| -Dmaven.test.skip=true | 不编译、不执行测试代码(最大化加速构建) | mvn clean package -Dmaven.test.skip=true(仅需生成部署包,无需测试相关操作) |
| mvn failsafe:integration-test | 执行集成测试(测试类名以 *IT 结尾),验证模块间交互 | mvn failsafe:integration-test(正式发布前必执行,验证项目整体可用性) |
四、打包与扩展打包命令
项目开发完成后,需要打包为可部署格式,以下命令覆盖常规打包、源码打包、自定义打包等场景,适配不同部署需求。
| 命令 | 作用 | 示例 |
|---|---|---|
| mvn jar:jar | 仅打包主代码为 jar 包,不执行编译、测试(需先编译) | mvn jar:jar(适合已编译完成,仅需重新打包的场景) |
| mvn war:war | 仅打包主代码为 war 包(web 项目),不执行编译、测试 | mvn war:war(web 项目快速打包,适合已编译完成的场景) |
| mvn source:jar | 打包源码为 jar 包,供他人查看源码(如发布公共组件) | mvn source:jar(发布到远程仓库时,通常需搭配 jar:jar 一起执行) |
| mvn javadoc:javadoc | 生成 JavaDoc 文档,方便团队查阅接口说明 | mvn javadoc:javadoc(输出到 target/site/apidocs 目录,可部署到服务器供团队查看) |
| mvn assembly:single | 自定义打包(含依赖、配置文件、脚本等),生成 zip/tar 等格式 | mvn assembly:single(需在 pom.xml 中配置 assembly.xml,定义打包规则) |
| mvn shade:shade | 生成可执行 Uber JAR(含所有依赖),可直接运行,避免依赖缺失 | mvn shade:shade(可重命名依赖包名,解决依赖冲突,适合独立运行的项目) |
五、项目信息与辅助命令
日常开发中,经常需要查看项目配置、创建新项目、修改版本等,以下命令可快速完成这些辅助操作,提升开发效率。
| 命令 | 作用 | 示例 |
|---|---|---|
| mvn help:effective-pom | 查看最终生效 POM(含继承、默认配置、profile 激活后的配置) | mvn help:effective-pom(排查 POM 配置问题,如依赖继承、profile 生效情况) |
| mvn help:effective-settings | 查看最终生效的 settings.xml 配置(含全局配置、镜像、仓库等) | mvn help:effective-settings(排查镜像、仓库配置问题,如依赖下载失败) |
| mvn help:describe | 查看插件/目标详情,了解插件参数、作用 | mvn help:describe -Dplugin=dependency -Ddetail(查看 dependency 插件所有目标和参数) |
| mvn archetype:generate | 从模板快速创建 Maven 项目,避免手动配置项目结构 | mvn archetype:generate -DgroupId=com.demo -DartifactId=demo-app -DarchetypeArtifactId=maven-archetype-quickstart(创建普通 Java 项目) |
| mvn versions:set | 批量修改项目版本(含父项目、子模块),避免手动修改 | mvn versions:set -DnewVersion=1.0.1(修改后用 versions:commit 确认,versions:revert 回滚) |
| mvn scm:commit/scm:tag | 代码提交、打标签(关联版本控制工具,如 Git) | 提交:mvn scm:commit -Dmessage="fix bug";打标签:mvn scm:tag -Dtag=v1.0(发布版本时打标签,方便回溯) |
六、常用参数速记
以下参数可搭配任意 Maven 命令使用,用于控制构建行为、加速构建、排查问题,是日常开发的"小技巧"。
| 参数 | 作用 | 使用示例 |
|---|---|---|
| -U | 强制更新快照依赖(snapshot 版本),解决快照依赖不更新问题 | mvn clean install -U |
| -o | 离线模式(不联网),仅使用本地仓库依赖,适合网络不佳时 | mvn clean package -o |
| -X | 输出调试日志(详细日志),排查构建失败、依赖冲突等问题 | mvn compile -X(日志较多,可输出到文件查看) |
| -P[环境名] | 激活指定环境的 profile 配置(如 dev、test、prod),切换环境配置 | mvn clean package -Pdev(激活 dev 环境,使用 dev 环境的配置) |
| -T 4 | 并发构建(4 线程),加速多模块项目构建,节省时间 | mvn -T 4C clean install(4C 表示按 CPU 核心数4倍配置线程) |
| -Dfile.encoding=UTF-8 | 指定编码格式,避免中文乱码(如编译、打包时中文注释乱码) | mvn compile -Dfile.encoding=UTF-8 |
| -s | 指定自定义 settings.xml 文件路径,替代默认配置,适配多环境配置需求 | mvn clean install -s D:\maven\conf\settings-dev.xml(指定开发环境配置文件) |
七、高频万能命令
整理了7个日常开发最高频的命令组合,无需记忆,直接复制执行,覆盖构建、依赖排查、打包等核心场景:
bash
# 1. 日常开发构建(跳过测试,加速)
mvn clean install -DskipTests
# 2. 依赖冲突排查(快速查看依赖树,定位冲突依赖)
mvn dependency:tree
# 3. 清理本地依赖(只删不下载,最常用)
mvn dependency:purge-local-repository -DreResolve=false
# 4. 精确清理指定依赖 + 重新构建(精准解决单个依赖问题)
mvn dependency:purge-local-repository -DmanualInclude="com.alibaba:fastjson" -DreResolve=false clean install
# 5. 生成可执行 Uber JAR(含所有依赖,可直接运行)
mvn clean package shade:shade -DskipTests
# 6. 强制更新快照依赖 + 构建(依赖快照版本不更新时)
mvn clean install -U -DskipTests
# 7. 只打包不安装(供部署,无需安装到本地仓库)
mvn clean package -DskipTests
结尾总结
本文整理了 Maven 全场景常用命令,涵盖核心生命周期、依赖管理、测试打包、项目辅助等模块,重点补充了依赖清理的高级参数,所有命令均提供可直接复制的示例,适配 Java 后端高频开发场景。熟练掌握这些命令,能大幅提升开发效率,避免因命令不熟悉导致的构建问题。建议收藏本文,日常开发中快速检索使用,也可转发给团队同事,共同提升开发效率。