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。多练习,这些命令就会变得得心应手。

mvn -X dependency:resolve

mvn -e -X clean package

mvn -X dependency:resolve | grep -i "spring-core"

mvn -X dependency:resolve| Select-String "spring-core" 

检查是否有其他依赖引入旧版本
mvn dependency:tree -Dincludes=*jsqlparser*


1. 首先修复父 POM 中的重复模块定义

2. 然后在项目根目录执行:mvn clean install -DskipTests

3. 最后在子模块目录执行:mvn clean compile


# 清理本地缓存
mvn clean install -U

# 或者强制更新所有依赖
mvn clean compile -U -Dmaven.main.skip=true

mvn dependency:tree | grep jsqlparser


# 快速构建(跳过测试和代码检查)
mvn clean install -DskipTests -Dcheckstyle.skip=true -Dspotbugs.skip=true

# 仅清理和编译
mvn clean compile

# 构建并运行测试(不打包)
mvn clean test

# 重新下载所有依赖
mvn clean compile -U

# 查看项目信息
mvn help:effective-pom

# 查看项目描述
mvn help:describe

# 查看插件信息
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin

# 生成项目站点
mvn site


# 查看依赖树
mvn dependency:tree

# 分析依赖冲突
mvn dependency:analyze

# 下载所有依赖源码
mvn dependency:sources

# 下载依赖的javadoc
mvn dependency:resolve -Dclassifier=javadoc

# 复制依赖到指定目录
mvn dependency:copy-dependencies


# 清理并重新构建项目
mvn clean install

# 跳过测试构建
mvn clean install -DskipTests

# 仅编译项目
mvn compile

# 运行测试
mvn test

# 打包项目
mvn package

# 安装到本地仓库
mvn install

# 部署到远程仓库
mvn deploy

E:\仿真\osp-cloud-java-1.2.0-xn-release\xn-modules\xn-system>mvn dependency:tree -Dincludes=*jsqlparser*
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.cnpc.xn:xn-system >------------------------
[INFO] Building xn-system 1.2.100-xn-release
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ xn-system ---
[INFO] com.cnpc.xn:xn-system:jar:1.2.100-xn-release
[INFO] \- cnpc.udp.dfw:udp-mybatis-plus-starter:jar:1.3.1:compile
[INFO]    \- com.baomidou:mybatis-plus-jsqlparser:jar:3.5.10.1:compile
[INFO]       \- com.github.jsqlparser:jsqlparser:jar:5.1:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.803 s
[INFO] Finished at: 2025-09-03T09:26:30+08:00
[INFO] ------------------------------------------------------------------------


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95470.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95470.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/95470.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

# pdf.js完全指南:构建现代Web PDF查看与解析解决方案

在当今Web开发中&#xff0c;实现高质量的PDF查看功能一直是前端开发者面临的挑战之一。作为最受欢迎的JavaScript PDF库&#xff0c;pdf.js已经成为解决这一问题的行业标准。由Mozilla开发并维护的pdf.js项目&#xff0c;通过纯JavaScript实现PDF解析与渲染&#xff0c;彻底改…

高效对象属性复制工具

日常编程中&#xff0c;经常会碰到对象属性复制的场景&#xff0c;比如 VO、DTO、PO、VO 等之间的转换&#xff0c;关于什么是VO、DTO、PO、VO 等可以看上篇文章&#xff0c;VO、DTO、PO、VO 等对象具体有哪些方式可以使用呢&#xff1f; set/get 方式 性能最好的方式&#x…

大疆图传技术参数对比 你了解多少?

无人机是现代航空技术与智能控制技术结合的产物&#xff0c;已从军事领域广泛渗透至民用场景&#xff0c;成为推动各行业效率升级的关键工具。无人机的全称为 “无人驾驶航空器&#xff08;Unmanned Aerial Vehicle&#xff0c;简称 UAV&#xff09;”&#xff0c;简言之&#…

Redis 缓存热身(Cache Warm-up):原理、方案与实践

在 Redis 缓存架构中&#xff0c;“缓存热身”是指在系统正式提供服务前&#xff08;如重启、扩容后&#xff09;&#xff0c;主动将热点数据加载到 Redis 中的操作。其核心目标是避免**缓存穿透**&#xff08;请求直达数据库&#xff09;和**缓存雪崩**&#xff08;大量请求同…

基于SpringBoot的大学生就业招聘系统

1. 在线演示&#xff1a; 后台&#xff1a;http://springbootiv1oo.xiaobias.com/springbootiv1oo/admin/dist/index.html 前台&#xff1a;http://springbootiv1oo.xiaobias.com/springbootiv1oo/front/index.html 管理员&#xff1a;abo/abo 用户&#xff1a;用户1/123456、…

Java反序列化漏洞揭秘:从原理到攻击实战

一、背景 熟悉接口开发的同学一定知道&#xff0c;能将数据对象很轻松的实现多平台之间的通信、对象持久化存储&#xff0c;序列化和反序列化是一种非常有效的手段&#xff0c;例如如下应用场景&#xff0c;对象必须 100% 实现序列化。 DUBBO&#xff1a;对象传输必须要实现序…

Time-MOE 音频序列分类任务

prompt 我准备做语音疾病分类任务。语音音频是 WAV 格式的音频&#xff0c;基本上分为两类&#xff0c;分别是疾病类和非疾病类。也有少数数据集是多分类&#xff0c;现在我找到了26个数据集&#xff0c;我准备我已经在 MLP CNN 上面测试了它们的基准&#xff0c;下面我找到了一…

[嵌入式embed][Qt]Qt5.12+Opencv4.x+Cmake4.x_测试Qt编译的opencv4.x的库

[嵌入式embed][Qt]Qt5.12Opencv4.xCmake4.x_测试Qt编译的opencv4.x的库编译Qt-Opencv库测试流程-①创建一个简单的qt-ui工程配置 & 测试配置库编译环境测试代码百度云-工程(opencv4.xqt5.12的工程)参考文档编译Qt-Opencv库 [嵌入式embed][Qt]Qt5.12Opencv4.xCmake4.x_用Qt…

相较于传统AR矿物鉴定有哪些优势?

与传统的矿物鉴定方法相比&#xff0c;AR矿物鉴定就像是一位全面升级的“超级助手”&#xff0c;展现出了无可比拟的优势。传统的矿物鉴定方法&#xff0c;往往依赖于地质学家或专业鉴定人员的丰富经验。他们需要通过肉眼观察矿物的颜色、光泽、硬度等物理特征&#xff0c;再结…

第5节:分布式文件存储

本节主要是讲解的是分布式文件存储&#xff0c;主要介绍了阿里云OSS云存储和Minio文件存储&#xff0c;本章重点主要是掌握怎么在SpringBoot项目里面接入文件存储。 记录、交流、实践&#xff0c;让每一份付出皆可看见&#xff0c;让你我共同前行&#x1f601; 1.分布式文件存…

当 GitHub 宕机时,我们如何协作?

一、引言1.1 GitHub 的重要性及宕机影响在当今软件开发的生态系统中&#xff0c;GitHub 已然成为全球开发者不可或缺的核心平台。它为无数开源项目与企业级开发团队提供了高效的代码托管、版本控制、协作开发以及项目管理等服务。然而&#xff0c;2025 年 8 月那场波及全球的 G…

Ansible 常用模块归纳总结

[studentmaster ansible]$ ansible-galaxy collection install http://ansible.example.com/materials/community-general-6.3.0.tar.gz -p collections/##将第三方模块下载到collections下 [studentmaster ansible]$ ansible-galaxy collection install http://ansible.exampl…

计算机网络:概述层---TCP/IP参考模型

&#x1f310; TCP/IP四层模型详解&#xff1a;互联网的核心协议架构深度剖析 &#x1f4c5; 更新时间&#xff1a;2025年9月3日 &#x1f3f7;️ 标签&#xff1a;TCP/IP模型 | 互联网协议 | 四层模型 | 计算机网络 | 协议栈 | 网络通信 | 王道考研 摘要: 本文将深入浅出地解析…

打工人日报#20250902

打工人日报#20250902 今天晚上去了玄武湖&#xff0c;来南京三次了&#xff0c;终于来了一次知识点 不确定度 “不确定度” 是测量领域的核心概念&#xff0c;用于量化测量结果的可靠性与分散程度—— 简单来说&#xff0c;它回答了 “这个测量值有多可信&#xff1f;真实值可能…

告别手动复制粘贴:C# 实现 Excel 与 TXT 文本文件高效互转

在日常办公和数据处理工作中&#xff0c;Excel 和 TXT文本文件是两种常见的数据存储格式。Excel文件适合进行复杂的数据分析、公式运算和图表生成&#xff0c;而 TXT文件则更适合用于存储和传输纯文本数据&#xff0c;如日志、配置文件或简单的数据列表。很多时候&#xff0c;我…

elasticsearch学习(二)插件安装

目录上一篇文章查看插件安装分词器analysis-icu重启实例重新查看插件上一篇文章 elasticsearch学习&#xff08;一&#xff09; 下载、安装和初次部署 查看插件 ➜ bin elasticsearch-plugin list warning: ignoring JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_…

(原创)SAP ATP可用量检查 OPJJ功能配置说明(900+字!)

前言&#xff1a;经常在ATP遇到问题&#xff0c;每次上网找都没有相关资料&#xff0c;一气之下直接在官网找资料收集&#xff0c;已整理相关字段与大家分享&#xff0c;避免大家走弯路附上我个人很久之前的的测试结果&#xff1a;具体字段控制说明检查不考虑补货提前期关联字段…

Unity资源管理——操作一览(编辑器下 运行时)

本文由 NRatel 历史笔记整理而来&#xff0c;如有错误欢迎指正。 资源管理是Unity游戏开发中的重头工作之一。 以下按【编辑器下】和 【运行时】&#xff0c;共十多个步骤&#xff0c;一览总体流程&#xff08;内容巨大&#xff0c;不细展开&#xff09;。 一、资源导入Unity【…

Sentinel vs Resilience4j vs Bucket4j:分布式限流方案对比与实战

Sentinel vs Resilience4j vs Bucket4j&#xff1a;分布式限流方案对比与实战 在高并发微服务架构中&#xff0c;合理的限流策略是保护系统稳定性与可用性的关键。本文将从问题背景入手&#xff0c;对 Sentinel、Resilience4j 和 Bucket4j 三种常见的分布式限流方案进行对比&am…

Spring Boot 3.5.3 集成 Log4j2 日志系统

在 Spring Boot 3.5.3 中&#xff0c;要将默认的 Logback 替换为 Log4j2&#xff0c;需要以下步骤&#xff1a;1. 添加 Log4j2 依赖在 pom.xml中排除默认的 Logback 依赖并添加 Log4j2 依赖&#xff1a;<dependencies><!-- 排除默认的 Logback --><dependency&g…