当前位置: 首页 > news >正文

maven 常用指令

Maven 是 Java 项目构建和依赖管理的得力助手。这里为你总结了一些常用指令,希望能帮你提升开发效率。

下面这个表格汇总了 Maven 最核心和常用的一些命令:

命令主要功能典型使用场景
mvn clean清理项目,删除 target 目录及其所有编译输出文件。确保全新的构建环境,避免旧文件干扰。
mvn compile编译项目的源代码(src/main/java 下的 .java 文件)。快速检查源代码是否存在编译错误。
mvn test​编译​​测试代码和源代码,并​​运行​​所有单元测试(使用 JUnit 或 TestNG)。验证代码功能是否正确,是保证质量的重要环节。
mvn package将编译后的代码​​打包​​为可分发的格式(如 JAR、WAR)。生成可用于部署或发布的构件。
mvn install将打包好的构件​​安装到本地 Maven 仓库​​(默认在 ~/.m2/repository)。供本地其他项目引用,多模块项目开发时非常常用。
mvn deploy将构件​​部署到远程 Maven 仓库​​(需要配置)。发布构件,以便团队其他成员或整个公司可以使用。
mvn dependency:tree​显示项目的依赖树​​,展示所有直接依赖和传递依赖。分析依赖关系,排查依赖冲突的利器。
mvn archetype:generate​根据原型(模板)创建新项目​​。快速搭建项目骨架。

mvn help:effective-settings # 查看生效的 settings 配置
mvn help:effective-pom      # 查看生效的 POM 配置(合并了所有父POM)
mvn dependency:resolve     # 解析并显示依赖的实际获取位置

🧩 ​​理解 Maven 生命周期​

Maven 命令与​​生命周期​​的概念紧密相关。Maven 有三套相互独立的生命周期:clean(清理)、default(默认,又称构建生命周期)、site(站点文档)

。每个生命周期包含多个​​阶段​​。

当你执行某个生命周期阶段时,Maven ​​会自动执行该生命周期中所有之前的阶段​​。例如:

  • •执行 mvn packagedefault 生命周期的一个阶段)时,Maven 会先执行 compiletest 等所有位于 package 之前的阶段。
  • •执行 mvn install 会自动触发 clean 之前的生命周期阶段(如 compiletestpackage)。

🔧 ​​常用参数与技巧​

  • •​​跳过测试​​:
    • -DskipTests: ​​跳过测试的运行​​,但会编译测试代码。
    • -Dmaven.test.skip=true: ​​同时跳过测试代码的编译和运行​​。效率更高,但完全不处理测试。
  • •​​强制更新快照依赖 (-U)​​:强制检查并更新远程仓库中的​​快照(SNAPSHOT)版本依赖​​(默认每天只更新一次)。常用于确保使用依赖的最新快照。
  • •​​指定配置文件 (-P)​​: 激活在 pom.xml 或 settings.xml 中定义的特定 ​​profile​​(配置剖面),常用于区分不同环境(如开发、测试、生产)。例如:mvn clean install -Pprod
  • •​​离线模式 (-o)​​:在​​离线模式​​下运行 Maven,仅使用本地仓库中已有的依赖,不联网检查更新。
  • •​​显示调试信息 (-X)​​: 输出 Maven 运行的​​详细调试信息​​,用于排查问题。

💡 ​​高效命令组合​

  • mvn clean install: ​​最常用的组合之一​​。先清理旧构建,再执行完整编译、测试、打包并安装到本地仓库。
  • mvn clean package: 清理后打包,常用于生成最终部署包。
  • mvn clean install -DskipTests: 快速安装,跳过测试以节省时间(请确保代码质量)。
  • mvn clean install -U: 清理安装并强制更新快照依赖。

📖 ​​了解更多​

  • •想深入了解 Maven 的​​依赖管理​​(如排除依赖、解决冲突),可以多研究 pom.xml 中的 <dependencies> 和 <dependencyManagement> 配置。
  • •探索各种 Maven 插件(如 Spring Boot、Docker 等相关的插件)可以让你更强大地自定义构建过程。

希望这份总结能帮助你更高效地使用 Maven。多练习,这些命令就会变得得心应手。

http://www.dtcms.com/a/362740.html

相关文章:

  • Corona渲染噪点终结指南:3ds Max高效去噪全攻略
  • 【3D 入门-3】常见 3D 格式对比,.glb / .obj / .stl / .ply
  • 通信中FDD和TDD的区别
  • 【SpringBootWeb开发】《一篇带你入门Web后端开发》
  • 242. 有效的字母异位词| 349. 两个数组的交集
  • 框架-SpringMVC-1
  • 手写Muduo网络库核心代码1-- noncopyable、Timestamp、InetAddress、Channel 最详细讲解
  • hive udf 执行一次调用多次问题
  • 算法 --- 模拟
  • HDFS读写机制深度解析:分布式存储的核心奥秘
  • Zookeeper分布式锁原理
  • java-设计模式-5-创建型模式-建造
  • 科普:为什么在开发板上运行 Qt 程序时需要在命令后加 -platform linuxfb
  • 少儿舞蹈小程序从0到1(5):搭建关于我们页面
  • 深入浅出 RabbitMQ - SpringBoot2.X整合RabbitMQ实战
  • 23种设计模式-抽象工厂模式
  • 蓝桥杯算法之基础知识(4)
  • Mysql杂志(七)
  • Deepin25安装mysql8.4.5
  • 在ROS中获取并发布UBS式传感器的温湿度
  • PostgreSQL(1) FETCH用法
  • 企业数字安全守护神:IT运维管理系统全面解析,构建坚不可摧的防护体系
  • 简陋的RPC
  • 从代码到组件:C语言动态库(DLL)封装与使用终极指南
  • NV115NV119美光固态闪存NV129NV112
  • 加速交通云建设,移动云为我国交通强国目标提供有力支撑
  • AES-GCM和(AES-CBC+SHA2-25-HAMC组合,并且发方通过每次内容,更新iv,填序使用递增数字)算法比较
  • 系统科学核心概念辨析及其在人工智能领域的应用研究:一个整合性分析框架
  • 分布式光纤传感选型 3 问:你的场景该选 DTS、DAS 还是 BOTDA?
  • 解锁WebRTC在数字人领域的无限潜能