【Maven系列】深入解析 Maven 常用命令

前言
在当今的软件开发过程中,项目管理是至关重要的一环。项目管理包括了项目构建、依赖管理以及发布部署等诸多方面。而在Java生态系统中,Maven已经成为了最受欢迎的项目管理工具之一。Maven 是一套用于构建、依赖管理和项目管理的工具,主要用于 Java 项目。Maven 命令是 Maven 的核心功能之一,通过这些命令可以执行项目的构建、编译、测试、打包等操作,帮助开发者自动化构建、测试和部署Java项目。了解Maven的常用命令是使用它的关键,下面将简单介绍一些我们日常开发中经常会用到的一些 Maven 命令。

一、项目构建命令
| 命令 | 说明 |
|---|---|
| mvn clean | 清理目标目录(target)中的输出文件。 |
| mvn compile | 编译位于 src/main/java 下的 Java 代码,生成.class文件到target目录。 |
| mvn test-compile | 编译测试源代码路径(src/test/java)下的 Java 代码。 |
| mvn test | 运行项目中的单元测试,编译并测试 src/test/java下的测试代码。 |
| mvn package | 将编译后的代码打包成 JAR 或 WAR 文件。 |
| mvn install | 将打包好的文件安装到本地仓库中,以便其他项目可以引用。 |
| mvn site | 生成项目站点文档。 |
例如:
# 清除历史打包并重新打包
mvn clean package# 只打包不测试(跳过测试)
mvn install -Dmaven.test.skip=true# 强制检查更新后打包
mvn clean package -U
二、依赖管理命令
| 命令 | 说明 |
|---|---|
| mvn dependency:resolve | 用于解析项目的依赖关系,检查项目的依赖配置,并下载所需的依赖库到本地仓库。 |
| mvn dependency:list | 查看当前项目已被解析的依赖。 |
| mvn dependency:tree | 用于查看项目的依赖树,会以树状结构展示项目的所有依赖关系。 |
| mvn dependency:analyze | 分析项目依赖,找出未使用的依赖和缺失的依赖。 |
| mvn dependency:copy-dependencies | 将项目的依赖复制到指定目录。 |
| mvn dependency:purge-local-repository | 用于清理本地仓库中的依赖库,可以删除不再需要的依赖库,从而节省磁盘空间。 |
三、发布部署命令
| 命令 | 说明 |
|---|---|
| mvn deploy | 用于将项目的构建结果发布到远程仓库。 它会将项目的Jar或War文件上传到Maven远程仓库,以便其他项目可以引用。 在执行这个命令之前,需要先执行mvn install命令。 |
| mvn release:prepare | 用于准备项目的发布版本。 它会自动更新项目的版本号,创建一个发布分支,并将相关的版本信息提交到版本控制系统。 |
| mvn release:perform | 用于执行项目的发布操作。 它会将项目的构建结果发布到Maven远程仓库,并将发布分支合并到主分支。 |
插件相关
| 命令 | 说明 |
|---|---|
| mvn plugin:help -Ddetail=true -Dgoal=goal-name | 显示某个插件目标的帮助信息。 |
| mvn help:effective-pom | 显示当前项目的有效 POM 文件。 |
| mvn help:describe -Dplugin=plugin-name -Dmojo=mojo-name -Dfull | 显示某个插件目标的详细信息。 |
构建生命周期
| 命令 | 说明 |
|---|---|
| mvn validate | 验证项目是否正确且所有必要信息都可用。 |
| mvn initialize | 初始化构建状态,例如设置属性或创建目录。 |
| mvn generate-sources | 生成源代码。 |
| mvn process-sources | 处理源代码,例如过滤。 |
| mvn generate-resources | 生成资源文件。 |
| mvn process-resources | 复制并处理资源文件到目标目录。 |
| mvn compile | 编译主源代码。 |
| mvn process-classes | 处理编译后的类文件。 |
| mvn generate-test-sources | 生成测试源代码。 |
| mvn process-test-sources | 处理测试源代码。 |
| mvn generate-test-resources | 生成测试资源文件。 |
| mvn process-test-resources | 复制并处理测试资源文件到目标目录。 |
| mvn test-compile | 编译测试源代码。 |
| mvn process-test-classes | 处理编译后的测试类文件。 |
| mvn test | 运行单元测试。 |
| mvn prepare-package | 在实际打包之前进行必要的准备工作。 |
| mvn package | 打包项目。 |
| mvn pre-integration-test | 在集成测试前执行的操作。 |
| mvn integration-test | 运行集成测试。 |
| mvn post-integration-test | 在集成测试后执行的操作。 |
| mvn verify | 检查集成测试的结果。 |
| mvn install | 安装包到本地仓库。 |
| mvn deploy | 部署包到远程仓库。 |
其他常用命令
| 命令 | 说明 |
|---|---|
| mvn archetype:generate | 创建一个新的 Maven 项目。 |
| mvn eclipse:eclipse | 生成 Eclipse 项目的配置文件(不推荐使用,建议使用 m2eclipse 插件)。 |
| mvn idea:idea | 生成 IntelliJ IDEA 项目的配置文件(不推荐使用,建议使用 IDE 自带的 Maven 支持)。 |
| mvn release:prepare | 准备发布版本。 |
| mvn release:perform | 执行发布操作,将发布版本部署到远程仓库。 |
| mvn versions:display-dependency-updates | 显示依赖项的更新信息。 |
| mvn versions:display-plugin-updates | 显示插件的更新信息。 |
| mvn versions:update-properties | 更新 POM 文件中的版本属性。 |
| mvn versions:set | 设置 POM 文件中的版本号。 |
| mvn versions:commit | 提交版本更改。 |
| mvn versions:revert | 回滚版本更改。 |
Mvn 命令参数
| 参数 | 说明 |
|---|---|
| mvn -v | 显示版本信息 |
| mvn -V | 显示版本信息后继续执行Maven其他目标 |
| mvn -h | 显示帮助信息 |
| mvn -D | 传入属性参数 |
| mvn -P | 使用pom中指定的配置,如有多个,用逗号隔开。 |
| -e | 显示maven运行出错的信息 |
| -o | 离线执行命令,即不去远程仓库更新包 |
| -X | 显示maven允许的debug信息 |
| -U | 强制检查更新,防止缓存等原因使用历史依赖,在自动化发布脚本中会经常用到。 |
总结
这些命令可以帮助我们完成项目的编译、测试、打包、安装和部署等任务,在命令行中输入对应的命令即可执行相应的操作。例如,要编译项目,可以输入mvn compile;要打包项目,可以输入mvn package。需要注意的是,在使用这些命令之前,需要先在项目的根目录下打开命令行窗口,并确保已经正确配置了Maven的环境变量。通过这些常用操作命令的掌握,我们可以更加高效地使用Maven管理项目,提高开发效率。
在项目中,我们可以根据具体的需求选择合适的命令来完成任务。例如,当需要快速清空项目产生的文件时,可以使用mvn clean命令;当需要打包并上传到私服时,可以使用mvn deploy命令。通过不断地实践和积累经验,我们可以更好地利用Maven的功能,为项目的顺利完成提供有力保障。

相关文章:
【Maven系列】深入解析 Maven 常用命令
前言 在当今的软件开发过程中,项目管理是至关重要的一环。项目管理包括了项目构建、依赖管理以及发布部署等诸多方面。而在Java生态系统中,Maven已经成为了最受欢迎的项目管理工具之一。Maven 是一套用于构建、依赖管理和项目管理的工具,主要…...
微信小程序之简单的数据中心管理平台(1)
微信小程序之简单的数据中心管理平台(1) 引言 随着微信小程序的广泛应用,越来越多的企业开始探索如何利用这一技术开发高效、便捷的管理平台。数据中心管理作为信息化建设的重要组成部分,需要一个灵活、可扩展的界面来实现资源的…...
sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)
1. MySQL 条件 数据库用户需要具备高权限(如 FILE 权限)。数据库服务运行用户需要对目标目录有写权限。Web 服务器有可写目录,且支持执行上传的脚本(如 PHP、JSP 等)。 原理 利用 MySQL 的 SELECT ... INTO OUTFIL…...
2024年认证杯SPSSPRO杯数学建模C题(第一阶段)云中的海盐解题全过程文档及程序
2024年认证杯SPSSPRO杯数学建模 C题 云中的海盐 原题再现: 巴黎气候协定提出的目标是:在2100年前,把全球平均气温相对于工业革命以前的气温升幅控制在不超过2摄氏度的水平,并为1.5摄氏度而努力。但事实上,许多之前的…...
三维扫描检测在汽车制造中的应用
三维扫描,通过先进三维扫描技术获取产品和物体的形面三维数据,建立实物的三维图档,满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维数字化存档、逆向设计、产品开发、直接3D打印制造或辅助加工制造等一系列的应用。 三维扫描…...
【NoSQL数据库】Hbase基本操作——数据库表的增删改查
目录 一、Hbase原理 二、HBase数据库操作 三、遇到的问题和解决方法 一、Hbase原理 HBase的数据模型: 行键 时间戳 列族:contents 列族:anchor 列族:mime “com.cnn.www” T9 Achor:cnnsi.com”CNN” T8 Achor:…...
【C++】格式化输出详解:掌握 cout 的进阶用法
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯格式化输出的理论概述💯控制输出宽度和填充字符setw 操作符setfill 操作符 💯控制浮点数的显示格式fixed 与 scientificsetprecision 💯…...
设计模式学习思路二
设计模式的学习思路_设计模式必须按顺序进行吗-CSDN博客 以下是一些方法和思路可以帮助你更清晰地识别使用了哪种设计模式。 1. 确定模式时的思考步骤 以下是分析代码时,你可以遵循的一些思路和步骤,帮助你识别可能使用的设计模式: a. 识别…...
什么是等级保护
1.为什么要实施等级保护: •国家信息安全形势严峻(敌对势力),针对基础信息系统的违法犯罪持续上升(网上诈骗、入侵、网上盗窃) •维护国家安全的需求(基础信息网络【互联网、电信网、广电网】及重要信息系统【银行、铁路、电力、海关】已经成为国家的关键基础设施) •信息安全是…...
k8s api对象,CRD
在Kubernetes项目中,一个API对象在Etcd里的完整资源路径,是由:Group(API组)、Version(API版本)和Resource(API资源类型)三个部分组成 apiVersion: batch/v2alpha1 kind:…...
【C++指南】C++内存管理 深度解析
💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 引言 一、C 内存管理概述 二、C内存区域划分 三、C 内存管理方式 🍃1.自动内存管理…...
C++小碗菜之二:软件单元测试
“没有测试的代码重构不能称之为重构,它仅仅是垃圾代码的到处移动” ——Corey Haines 目录 前言 什么是单元测试? 单元测试的组成 单元测试的命名 单元测试的独立性 Google Test 单元测试的环境配置与使用 1. Ubuntu下安装 Google Test 2. 编写…...
PyCharm+Selenium+Pytest配置小记
1、下载ChromeDriver: Chrome130以后的Driver下载: Chrome for Testing availabilityhttps://googlechromelabs.github.io/chrome-for-testing/ (1)查看自己Crome浏览器的版本:设置-->关于 Chrome; &…...
摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/12/04
Learning Roadmap: Section 1: Intro to Parallel Programming & MUSA Deep Learning Ecosystem(摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/11/30-CSDN博客)UbuntuDriverToolkitcondapytorchtorch_musa环境安装(2024/11/24-Ubunt…...
【FAQ】HarmonyOS SDK 闭源开放能力 —Remote Communication Kit
1.问题描述: DynamicDnsRule有没有示例?这个地址是怎么解析出来 https://developer.huawei.com/consumer/cn/doc/harmonyos-references/remote-communication-rcp-0000001770911890#section8160554134811 解决方案: ‘DynamicDnsRule’&a…...
【日常记录-Mybatis】PageHelper导致语句截断
1. 简介 PageHelper是Mybatis-Plus中的一个插件,主要用于实现数据库的分页查询功能。其核心原理是将传入的页码和条数赋值给一个Page对象,并保存到本地线程ThreadLocal中,接下来,PageHelper会进入Mybatis的拦截器环节,…...
随时随地掌控数据:如何使用手机APP远程访问飞牛云NAS
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
JVM 类加载器有哪些?双亲委派机制的作用是什么?如何自定义类加载器?
类加载器分类 大家好,我是码哥,可以叫我靓仔,《Redis 高手心法》畅销书作者。 先回顾下,在 Java 中,类的初始化分为几个阶段: 加载、链接(包括验证、准备和解析)和 初始化。 而 类加载器&#x…...
从基态到激发态再到里德伯态的双光子激发过程
铯原子(Cs)从基态6S1/2到激发态6P3/2再到里德伯态44D5/2的双光子激发过程, 并通过数值计算和图形化展示来研究不同失谐条件下的拉比频率、AC Stark位移差以及散射概率的变化 结果显示,在给定的实验参数下,拉比频率较低…...
Clickhouse 外部存储引擎
文章目录 外部存储引擎分类MySQL引擎PostgreSQL引擎MongoDB引擎JDBC引擎ODBC引擎Kafka引擎RabbitMQ引擎File引擎URL引擎HDFS引擎 外部存储引擎分类 引擎类型描述特点MySQL从 MySQL 数据库中读取数据用于与 MySQL 数据库共享数据,支持读取 MySQL 表中的数据 支持 SQ…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
