Maven 的常用指令

一、核心构建指令

  1. mvn clean

    • 作用 :删除 target 目录(清理编译/打包生成的文件)。

    • 场景:确保从头开始构建,避免残留文件干扰。

  2. mvn compile

    • 作用:编译项目源代码。

    • 场景:快速检查代码是否能编译通过,无需打包。

  3. mvn package

    • 作用:编译 + 运行测试 + 打包(生成 JAR/WAR 等)。

    • 场景:本地验证完整构建流程,生成可部署的包。

  4. mvn install

    • 作用:编译 + 测试 + 打包,并将构建结果安装到本地仓库。

    • 场景:本地多模块项目中,将子模块的构建结果提供给其他模块使用。

  5. mvn deploy

    • 作用:将构建结果发布到远程仓库(如 Nexus、Artifactory)。

    • 场景:将稳定版本的依赖共享给团队或持续集成环境。


二、依赖管理指令

  1. mvn dependency:tree

    • 作用:打印项目依赖树,显示所有传递性依赖。

    • 场景:分析依赖冲突(如多个版本的库冲突),快速定位问题。

  2. mvn dependency:analyze

    • 作用:检查未声明但被使用的依赖(或声明但未使用的依赖)。

    • 场景 :优化 pom.xml,清理冗余依赖。

  3. mvn versions:display-dependency-updates

    • 作用:扫描依赖是否有新版本可用。

    • 场景:定期更新依赖版本,修复安全漏洞或使用新特性。


三、测试相关指令

  1. mvn test

    • 作用:运行单元测试。

    • 场景:验证代码逻辑是否符合预期。

  2. mvn test -Dtest=TestClassName

    • 作用:运行指定测试类。

    • 场景:调试单个测试用例,避免运行全部测试。

  3. mvn test -DskipTests

    • 作用:跳过测试阶段。

    • 场景:快速构建(如临时修复时不需要执行测试)。


四、调试与优化指令

  1. mvn -X

    • 作用:开启 Maven 的调试日志(显示详细执行过程)。

    • 场景:排查构建失败的具体原因。

  2. mvn -U

    • 作用:强制更新远程仓库的快照(Snapshot)依赖。

    • 场景:确保使用最新的快照版本(如依赖频繁更新的开发中库)。

  3. mvn --offline

    • 作用:离线模式(仅使用本地仓库的依赖)。

    • 场景:网络不可用时继续构建。


五、多模块项目指令

  1. mvn -pl module1,module2

    • 作用 :仅构建指定的子模块(如 module1module2)。

    • 场景:大型项目中快速构建部分模块,节省时间。

  2. mvn -am -pl module1

    • 作用:构建指定模块及其依赖的其他模块。

    • 场景 :确保依赖的子模块已构建(如 module1 依赖 core 模块时自动构建 core)。


六、高级场景

  1. mvn help:effective-pom

    • 作用:生成合并所有父 POM 后的最终有效 POM。

    • 场景:分析实际生效的配置(如插件、依赖版本)。

  2. mvn archetype:generate

    • 作用:使用 Maven 原型(模板)创建新项目。

    • 场景:快速生成标准项目结构(如 Spring Boot、JavaFX 项目)。

  3. mvn release:prepare / mvn release:perform

    • 作用:自动化版本发布(更新版本号、打 Tag、发布到仓库)。

    • 场景:规范化的版本发布流程。


总结表格

指令 典型场景
mvn clean install 清理旧构建并安装到本地仓库
mvn dependency:tree 分析依赖冲突或冗余依赖
mvn test -DskipTests 跳过测试快速打包
mvn versions:display-dependency-updates 检查依赖库是否有新版本可用
mvn -pl module1 -am 构建指定模块及其依赖模块
mvn -X 开启详细日志排查构建问题

通过灵活组合这些指令,可以高效完成构建、调试和发布任务。

相关推荐
Yuanymoon21 分钟前
【由技及道】统一封装API返回结果后String返回报错文件解决原理--Spring 消息转换器的层次图解与规则说明【人工智障AI2077的开发问题日志002】
java·spring
听风说雨的人儿28 分钟前
ES6 class的继承概念
java·前端·es6
l_tian_tian_31 分钟前
JavaWeb——Mybatis、JDBC、数据库连接池、lombok
java·数据库·mybatis
臣妾写不来啊1 小时前
使用dify的api连接外部知识库,dify连接ragflow的知识库(附java代码)
java·开发语言·spring boot
深思慎考1 小时前
Linux——进程间通信初解(匿名管道与命名管道)
java·linux·服务器
Seven971 小时前
【设计模式】使用解释器模式简化复杂的语法规则
java·后端·设计模式
yyueshen1 小时前
JVM中是如何定位一个对象的
java·jvm
异常驯兽师1 小时前
《Java三剑客:JDK、JRE、JVM的“塑料友情”》
java·开发语言·jvm
Seven972 小时前
【设计模式】通过访问者模式实现分离算法与对象结构
java·后端·设计模式
不会写代码的码农农2 小时前
【2025年26期免费获取股票数据API接口】实例演示五种主流语言获取股票行情api接口之沪深A股涨停股池数据获取实例演示及接口API说明文档
java·开发语言·python·股票api·股票数据接口·股票数据