深入解析Maven常用命令
目录
- 什么是 Maven
- Maven 的安装与配置
- Maven 项目结构
- Maven 常用命令
- mvn clean
- mvn compile
- mvn test
- mvn package
- mvn install
- mvn deploy
- mvn site
- mvn dependency
- mvn help
- 总结
什么是 Maven
Maven 是由 Apache 软件基金会开发的一个项目管理和构建工具。它基于项目对象模型(POM),通过一份描述项目构建、报告和文档的 XML 文件来管理项目的整个生命周期。Maven 的主要功能包括:
- 依赖管理:自动下载项目所需的依赖库和插件。
- 构建自动化:通过一系列预定义的目标(goals)来自动化项目的编译、测试、打包、部署等过程。
- 项目文档生成:自动生成项目的网站和文档。
Maven 的安装与配置
在使用 Maven 之前,需要先进行安装和配置。以下是详细步骤:
安装 Maven
- 下载 Maven:从 Maven 官方网站 下载最新版本的 Maven 二进制文件。
- 解压文件:将下载的文件解压到一个目录,例如
/opt/maven
。 - 配置环境变量:
- 添加
MAVEN_HOME
环境变量,指向 Maven 的安装目录。 - 将 Maven 的
bin
目录添加到PATH
环境变量中。
- 添加
在 Linux 或 macOS 上,可以通过编辑 ~/.bashrc
或 ~/.zshrc
文件来配置环境变量:
export MAVEN_HOME=/opt/maven
export PATH=$MAVEN_HOME/bin:$PATH
在 Windows 上,可以通过系统属性中的“环境变量”设置来配置。
验证安装
在命令行中输入以下命令来验证 Maven 是否安装成功:
mvn -v
如果正确安装,您将看到 Maven 版本和 Java 版本等信息。
Maven 项目结构
Maven 项目遵循一种标准的目录结构,这使得项目更具可读性和可维护性。一个典型的 Maven 项目结构如下:
my-app
|-- pom.xml
`-- src|-- main| `-- java| `-- com| `-- mycompany| `-- app| `-- App.java`-- test`-- java`-- com`-- mycompany`-- app`-- AppTest.java
pom.xml
:项目对象模型文件,定义项目的配置和依赖。src/main/java
:存放项目的源代码。src/test/java
:存放项目的测试代码。
Maven 常用命令
Maven 提供了大量的命令来管理项目的各个方面。下面是一些最常用的 Maven 命令及其详细解释。
mvn clean
mvn clean
命令用于清理项目,删除 target
目录中的所有文件。
mvn clean
作用
该命令的主要作用是删除由之前构建过程生成的所有文件和目录,确保下次构建是从一个干净的状态开始。这对于避免构建过程中出现的各种奇怪问题非常有用。
示例
mvn clean
执行该命令后,target
目录将被删除。
mvn compile
mvn compile
命令用于编译项目的源代码。
mvn compile
作用
该命令会将 src/main/java
目录下的所有源代码文件编译成字节码,并输出到 target/classes
目录中。
示例
mvn compile
执行该命令后,您将在 target/classes
目录中看到编译后的 .class
文件。
mvn test
mvn test
命令用于运行项目的单元测试。
mvn test
作用
该命令会编译 src/test/java
目录下的所有测试代码,并运行所有测试类中的测试方法。Maven 使用 Surefire 插件来执行这些测试,并生成测试报告。
示例
mvn test
执行该命令后,您将在 target/surefire-reports
目录中看到生成的测试报告。
mvn package
mvn package
命令用于打包项目。
mvn package
作用
该命令会将编译后的代码和资源文件打包成一个分发格式,如 JAR、WAR 或 EAR 文件。生成的文件存储在 target
目录中。
示例
mvn package
执行该命令后,您将在 target
目录中看到生成的 JAR 文件。
mvn install
mvn install
命令用于将项目安装到本地仓库。
mvn install
作用
该命令会将项目的打包文件(如 JAR 文件)安装到本地 Maven 仓库中,这样其他本地项目就可以作为依赖来使用该项目。
示例
mvn install
执行该命令后,项目的打包文件将被安装到本地仓库,通常位于 ~/.m2/repository
目录中。
mvn deploy
mvn deploy
命令用于将项目部署到远程仓库。
mvn deploy
作用
该命令会将项目的打包文件部署到配置的远程 Maven 仓库,以便其他团队成员或项目可以使用这些构件。
示例
mvn deploy
执行该命令前,您需要在 pom.xml
文件中配置远程仓库的信息。
mvn site
mvn site
命令用于生成项目的网站。
mvn site
作用
该命令会根据 pom.xml
文件中的配置生成项目的站点文档,包括项目报告、依赖关系、代码覆盖率等。
示例
mvn site
执行该命令后,生成的站点文件将存储在 target/site
目录中。
mvn dependency
mvn dependency
命令用于管理项目的依赖。常见子命令包括 mvn dependency:tree
和 mvn dependency:list
。
作用
mvn dependency:tree
:以树状结构显示项目的依赖关系。mvn dependency:list
:列出项目的所有依赖。
示例
mvn dependency:tree
执行该命令后,您将看到项目的依赖树,显示每个依赖及其传递依赖。
mvn dependency:list
执行该命令后,您将看到项目的所有依赖列表。
mvn help
mvn help
命令用于获取帮助信息。
mvn help
作用
该命令可以帮助您了解 Maven 的用法、可用命令和插件的信息。
示例
mvn help:describe -Dcmd=compile
执行该命令后,您将看到 compile
命令的详细描述。
总结
Maven 作为一个强大的构建和项目管理工具,通过其丰富的命令集极大地简化了项目的管理和构建过程。本文详细介绍了 Maven 的常用命令及其作用,希望能帮助您更好地掌握和使用 Maven。在实际开发中,灵活运用这些命令,可以大大提高开发效率和项目质量。
如需进一步了解 Maven,可以参考 Maven 官方文档。祝您在使用 Maven 的过程中取得成功!
相关文章:
深入解析Maven常用命令
目录 什么是 MavenMaven 的安装与配置Maven 项目结构Maven 常用命令 mvn cleanmvn compilemvn testmvn packagemvn installmvn deploymvn sitemvn dependencymvn help 总结 什么是 Maven Maven 是由 Apache 软件基金会开发的一个项目管理和构建工具。它基于项目对象模型&…...

【Docker】镜像
目录 1. 镜像拉取 2. 镜像查询 3. 镜像导出 4. 镜像上传 5. 镜像打标签 6. 镜像上推 7. 镜像删除 8. 镜像运行及修改 8.1 在registry 节点运行 mariadb 镜像,将宿主机 13306 端口作为容器3306 端口映射 8.2 查看容器ID 8.3 进入容器 8.4 创建数据库xd_d…...

力扣最新详解5道题:两数之和三数之和四数之和
目录 一、查找总价格为目标值的两个商品 题目 题解 方法一:暴力枚举 方法二:对撞指针 二、两数之和 题目 题解 方法一:暴力枚举 方法二:哈希表法 三、三数之和 题目 题解 方法一:排序暴力枚举set去重 …...

通讯:单片机串口和电脑通讯
目录 1.串口输出数据到电脑 硬件部分 串口输出数据到电脑的软件软件部分: 相关问题: 2.单片机串口--485--485转USB--电脑 串口,芯片,转换器,设备之间的通讯的接线,都是要TX--RX, RX--TX 交叉连接。 单…...

ubuntu22.04 设置双屏
一 概述 最近把ubuntu18.04 升级到 22.04 双屏显示出来问题,在此记录下解决问题方案。二 解决方案 1 使用命令查看能检测到显示器 xrandr根据输出的信息,我们可以知道 HDMI-0 与 DP-0 是connected 。检测到两个显示器 2 设置输出显示器分辨率 由于我…...
【FPGA-常见问题及解决方案】
1、VIVADO的License无法加载:license文件必须在英文路径; 2、例程代码路径不能过长,也不允许有中文路径!!! 3、明明加载了license,license也正确,例程无法完成综合:这种情…...
【第3章】MyBatis-Plus持久层接口之Service Interface(上)
文章目录 前言一、save1. 示例(save)2. 示例(saveBatch)3. 示例(saveBatch 指定批次大小) 二、saveOrUpdate1.示例(saveOrUpdate)2.示例(saveOrUpdateBatch)3…...
Nodemon的入门及使用
nodemon 是一个工具,通过在检测到目录中的文件更改时自动重新启动 Node.js 应用程序来帮助开发基于 Node.js 的应用程序。它非常适合在开发环境中使用。以前,我们开发一个 Node 后端服务时,每次更改文件,都需要手动重启服务才能生…...
cesium 实现三维无人机航拍过程实景效果
需求背景 需要实现一个动态的三维无人机航拍过程实景效果 代码开发中,迭代功能待续... 解决效果 cesium 实现三维无人机航拍过程实景效果 index.vue <template><div><el-button class"btn" click"start">开始</el-butt…...
Rust:使用 Warp 框架编写基于 HTTPS 的 RESTful API
在 Rust 中使用 Warp 框架编写基于 HTTPS 的 RESTful API,你需要首先设置好 TLS/SSL 证书以启用 HTTPS。以下是一个基本的步骤指南: 步骤 1: 安装 Rust 和 Cargo 确保你已经安装了 Rust 和 Cargo。你可以从 Rust 官网 下载并安装 Rust。 步骤 2: 创建…...

测试开发工程师需要掌握什么技能?
测试开发工程师是软件开发中至关重要的角色之一。他们负责编写、维护和执行自动化测试脚本、开发测试工具和框架,以确保软件的质量和稳定性。为了成为一名优秀的测试开发工程师,你需要掌握以下技能: 1. 编程技能: 作为测试开发工…...
SpelExpressionParser评估SpEL(Spring Expression Language)表达式的解析器
是Spring中用于解析和评估SpEL(Spring Expression Language)表达式的解析器,SpEL是一种强大且灵活的表达式语言,广泛用于Spring框架中,以便在运行时解析和评估表达式 主要功能 1.解析和评估表达式:spelExpressionParser可以解析复杂的表达式,并在运行时对其进行评估; 2.访问…...

C#学习系列之DataGrid无故添加空行
C#学习系列之DataGrid无故添加空行 前言解决前解决后总结 前言 采用别人的轮子,想在基础上改界面,但是copy后,无论怎么样都会有空行,实在是绑定数据的输入没有任何赋值。 解决前 绑定的数据中输入三组数据,但是没有第…...
详解Alibaba Cloud Linux 3.2104 LTS 64位镜像操作系统
Alibaba Cloud Linux 3.2104是阿里云推出的云原生Linux发行版Alibaba Cloud Linux 3版本,64位操作系统,由阿里云提供免费长期维护更新和漏洞修复,镜像Alibaba Cloud Linux 3.2104 LTS 64位操作系统性能很不错,针对ECS云服务器进行…...

springboot异常产生原因
DataIntegrityViolationException Cause: java.sql.SQLException: Field ‘id’ doesn’t have a default value org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql.SQLException: Field id doesnt have a default …...

Redis 7.x 系列【8】数据类型之哈希(Hash)
有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 HSET2.2 HGET2.3 HDEL2.4 HEXISTS2.5 HGETALL2.6 HKEYS2.7 HLE…...
jetson 安装 Rustdesk失败
报错: rustdesk depends on gstreamer1.0-pipewire; however: Package gstreamer1.0-pipewire is not installed. 原因: 对于rustdesk,其1.2.3 版需要gstreamer1.0-pipewire软件包,但是此软件包仅适用于 Ubuntu 22.04、22.10、23.04 和 2…...

Vue原生写全选反选框
效果 场景:Vue全选框在头部,子框在v-for循环内部。 实现:点击全选框,所有子项选中,再次点击取消;子项全选中,全选框自动勾选,子项并未全选,全选框不勾选;已选…...

typescript学习回顾(三)
今天继续来分享ts的相关概念,枚举,ts模块化,接口和类型兼容性 ts的扩展类型:类型别名,枚举,接口和类 枚举 基础概念 枚举通常用于约束某个变量的取值范围。当然字面量和联合类型配合使用,也可…...

算尽天下财,铸就大明梦 —— 大明钱算子夏元吉的传奇一生
仕途生涯开始:洪武二十三年(1390年),夏元吉因精通《诗经》,由湖广乡荐参加礼部组织的会试,虽未中举,但他并未气馁,反而更加努力地学习。洪武二十四年(1391年)…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...