Maven 常用命令完整版速查表

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 后端高频开发场景。熟练掌握这些命令,能大幅提升开发效率,避免因命令不熟悉导致的构建问题。建议收藏本文,日常开发中快速检索使用,也可转发给团队同事,共同提升开发效率。

相关推荐
砍材农夫2 小时前
spring-ai 第十tool调用
java·人工智能·spring
aaa最北边2 小时前
计算机网络-断开连接的四次挥手底层细节
java·网络·计算机网络
java叶新东老师2 小时前
解决jetbrains idea 自带终端无法加载windows系统环境变量
java·windows·intellij-idea
大G的笔记本2 小时前
Java WebSocket客户端--java.net.http.HttpClient
java·websocket·.net
我是李龙2 小时前
第二十一章 项目启动与治理架构:从招标到甲乙方协作机制的建立
java·架构·devops
Mem0rin2 小时前
[Java/数据结构]树的基本概念、二叉树的创建和遍历
java·开发语言·数据结构
rannn_1112 小时前
【Redis|高级篇2】多级缓存|JVM进程缓存、Lua语法、多级缓存实现(OpenResty)、缓存同步(Canal)
java·redis·分布式·后端·缓存·lua·openresty
Lyyaoo.2 小时前
【JAVA基础面经】CAS 与 ABA
java·开发语言
AC赳赳老秦2 小时前
OpenClaw对接百度指数:关键词热度分析,精准定位博客创作方向
java·python·算法·百度·dubbo·deepseek·openclaw