深入解析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年)…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...
