Maven 作为 Java 项目构建和依赖管理的利器,其命令行操作是开发者日常工作的必备技能。本文整理了 Maven 最常用的命令,涵盖项目构建、依赖管理、测试运行、打包部署等核心场景,并附带实用示例和注意事项,帮助你高效驾驭 Maven 工作流。
一、基础构建命令
1. mvn clean
功能:清理项目编译生成的文件,包括target目录下的所有内容(class 文件、jar 包、日志等)。
适用场景:当项目出现编译缓存导致的异常时,或需要重新构建干净的项目时使用。
示例:
mvn clean # 仅清理项目
2. mvn compile
功能:编译项目的主源代码(默认位于src/main/java目录),编译结果输出到target/classes。
注意:仅编译主代码,不包含测试代码。
示例:
mvn compile # 编译主源代码
3. mvn test-compile
功能:编译项目的测试源代码(默认位于src/test/java目录),结果输出到target/test-classes。
依赖:需先执行mvn compile,或直接通过mvn test触发(test命令会自动执行test-compile)。
示例:
mvn test-compile # 仅编译测试代码
4. mvn test
功能:运行项目中的测试用例(如 JUnit 测试),并生成测试报告(位于target/surefire-reports)。
执行流程:自动触发compile和test-compile,确保主代码和测试代码都已编译。
示例:
mvn test # 运行所有测试用例
mvn test -Dtest=UserServiceTest # 仅运行指定测试类
mvn test -Dtest=UserServiceTest#testLogin # 仅运行指定测试方法
二、打包与安装命令
1. mvn package
功能:将项目打包为指定格式(默认是 jar 包,web 项目为 war 包),输出到target目录。
执行流程:自动执行clean、compile、test(可跳过测试)等前置步骤。
常用参数:
- -DskipTests:跳过测试执行,但会编译测试代码。
- -Dmaven.test.skip=true:完全跳过测试(不编译也不执行)。
示例:
mvn package # 常规打包(包含测试)
mvn package -DskipTests # 打包并跳过测试执行
mvn package -Dmaven.test.skip=true # 打包并完全跳过测试
mvn clean package -Dmaven.test.skip=true # 先清除然后打包并完全跳过测试
2. mvn install
功能:将项目打包后的 jar/war 包安装到本地 Maven 仓库(默认路径:~/.m2/repository),供本地其他项目依赖使用。
执行流程:包含package的所有步骤,额外增加安装到本地仓库的操作。
示例:
mvn install # 安装项目到本地仓库
mvn clean install # 先清理再安装(推荐)
3. mvn deploy
功能:将项目打包后部署到远程 Maven 仓库(需在pom.xml中配置远程仓库地址),供团队其他成员或项目共享。
执行流程:包含install的所有步骤,最终上传到远程仓库。
注意:需提前配置远程仓库的账号密码(通常在settings.xml中)。
示例:
mvn deploy # 部署项目到远程仓库
mvn clean deploy -DskipTests # 清理后部署,跳过测试
三、依赖管理命令
1. mvn dependency:tree
功能:以树形结构展示项目的所有依赖,包括直接依赖和间接依赖,帮助分析依赖冲突。
常用参数:
- -Dverbose:显示冲突的依赖(被忽略的版本会标红)。
示例:
mvn dependency:tree # 查看依赖树
mvn dependency:tree -Dverbose # 查看详细依赖树(含冲突)
2. mvn dependency:analyze
功能:分析项目依赖的使用情况,检测出 “未使用但被声明的依赖” 和 “已使用但未声明的依赖”。
适用场景:优化pom.xml,移除冗余依赖。
示例:
mvn dependency:analyze
3. mvn dependency:purge-local-repository
功能:清理本地仓库中项目相关的依赖,强制重新下载,解决本地仓库依赖损坏或缓存问题。
示例:
mvn dependency:purge-local-repository # 清理并重新下载依赖
四、项目信息与验证命令
1. mvn validate
功能:验证项目结构和配置是否符合 Maven 规范(如pom.xml是否完整、目录结构是否正确),是构建生命周期的第一步。
示例:
mvn validate # 验证项目合法性
2. mvn help:effective-pom
功能:展示项目的 “有效 POM”,即合并了父 POM、settings.xml配置后的最终生效的pom.xml,便于排查配置问题。
示例:
mvn help:effective-pom
3. mvn help:system
功能:打印系统属性和环境变量,可用于验证 Maven 运行环境(如 JDK 版本、Maven 版本等)。
示例:
mvn help:system
五、高级实用命令
1. mvn site
功能:生成项目站点文档(包括测试报告、依赖信息、项目说明等),输出到target/site目录。
扩展:可结合maven-site-plugin自定义站点内容。
示例:
mvn site # 生成站点文档
mvn site:run # 启动本地服务器预览站点(默认端口8080)
2. mvn archetype:generate
功能:通过 Maven 原型(archetype)快速创建新项目骨架,支持 Java、Web、Spring 等多种项目类型。
操作流程:
- 执行命令后选择原型编号(如maven-archetype-quickstart对应普通 Java 项目);
- 输入 groupId、artifactId、版本等信息即可生成项目。
示例:
mvn archetype:generate # 交互式创建项目
3. 多模块项目命令
对于包含多个子模块的项目(父pom.xml中配置<modules>),可通过以下命令批量操作子模块:
mvn clean install -pl 子模块1,子模块2 # 仅构建指定子模块
mvn clean install -am # 构建当前模块及依赖的子模块
mvn clean install -amd # 构建当前模块及依赖它的子模块
六、常用参数总结
|
参数 |
作用 |
|
-DskipTests |
跳过测试执行,但编译测试代码 |
|
-Dmaven.test.skip=true |
完全跳过测试(不编译、不执行) |
|
-U |
强制更新快照版本(SNAPSHOT)的依赖 |
|
-e |
显示详细错误日志 |
|
-X |
开启调试模式(输出完整执行日志) |
|
-pl <模块名> |
指定构建的模块(多模块项目) |
结语
Maven 命令的灵活运用能极大提升项目构建效率。日常开发中,mvn clean install(清理并安装到本地仓库)和mvn package -DskipTests(快速打包)是使用频率最高的命令。熟练掌握本文整理的命令及场景,可轻松应对绝大多数项目构建需求。如果遇到复杂问题,可通过-X参数查看详细日志,或结合dependency:tree分析依赖,快速定位问题根源。
1363

被折叠的 条评论
为什么被折叠?



