深入解析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年)…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
