当前位置: 首页 > news >正文

深入解析Maven常用命令

目录

  1. 什么是 Maven
  2. Maven 的安装与配置
  3. Maven 项目结构
  4. Maven 常用命令
    • mvn clean
    • mvn compile
    • mvn test
    • mvn package
    • mvn install
    • mvn deploy
    • mvn site
    • mvn dependency
    • mvn help
  5. 总结

什么是 Maven

Maven 是由 Apache 软件基金会开发的一个项目管理和构建工具。它基于项目对象模型(POM),通过一份描述项目构建、报告和文档的 XML 文件来管理项目的整个生命周期。Maven 的主要功能包括:

  • 依赖管理:自动下载项目所需的依赖库和插件。
  • 构建自动化:通过一系列预定义的目标(goals)来自动化项目的编译、测试、打包、部署等过程。
  • 项目文档生成:自动生成项目的网站和文档。

Maven 的安装与配置

在使用 Maven 之前,需要先进行安装和配置。以下是详细步骤:

安装 Maven

  1. 下载 Maven:从 Maven 官方网站 下载最新版本的 Maven 二进制文件。
  2. 解压文件:将下载的文件解压到一个目录,例如 /opt/maven
  3. 配置环境变量
    • 添加 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:treemvn 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 实现三维无人机航拍过程实景效果

需求背景 需要实现一个动态的三维无人机航拍过程实景效果 代码开发中&#xff0c;迭代功能待续... 解决效果 cesium 实现三维无人机航拍过程实景效果 index.vue <template><div><el-button class"btn" click"start">开始</el-butt…...

Rust:使用 Warp 框架编写基于 HTTPS 的 RESTful API

在 Rust 中使用 Warp 框架编写基于 HTTPS 的 RESTful API&#xff0c;你需要首先设置好 TLS/SSL 证书以启用 HTTPS。以下是一个基本的步骤指南&#xff1a; 步骤 1: 安装 Rust 和 Cargo 确保你已经安装了 Rust 和 Cargo。你可以从 Rust 官网 下载并安装 Rust。 步骤 2: 创建…...

测试开发工程师需要掌握什么技能?

测试开发工程师是软件开发中至关重要的角色之一。他们负责编写、维护和执行自动化测试脚本、开发测试工具和框架&#xff0c;以确保软件的质量和稳定性。为了成为一名优秀的测试开发工程师&#xff0c;你需要掌握以下技能&#xff1a; 1. 编程技能&#xff1a; 作为测试开发工…...

SpelExpressionParser评估SpEL(Spring Expression Language)表达式的解析器

是Spring中用于解析和评估SpEL(Spring Expression Language)表达式的解析器,SpEL是一种强大且灵活的表达式语言,广泛用于Spring框架中,以便在运行时解析和评估表达式 主要功能 1.解析和评估表达式:spelExpressionParser可以解析复杂的表达式,并在运行时对其进行评估; 2.访问…...

C#学习系列之DataGrid无故添加空行

C#学习系列之DataGrid无故添加空行 前言解决前解决后总结 前言 采用别人的轮子&#xff0c;想在基础上改界面&#xff0c;但是copy后&#xff0c;无论怎么样都会有空行&#xff0c;实在是绑定数据的输入没有任何赋值。 解决前 绑定的数据中输入三组数据&#xff0c;但是没有第…...

详解Alibaba Cloud Linux 3.2104 LTS 64位镜像操作系统

Alibaba Cloud Linux 3.2104是阿里云推出的云原生Linux发行版Alibaba Cloud Linux 3版本&#xff0c;64位操作系统&#xff0c;由阿里云提供免费长期维护更新和漏洞修复&#xff0c;镜像Alibaba Cloud Linux 3.2104 LTS 64位操作系统性能很不错&#xff0c;针对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)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;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. 原因&#xff1a; 对于rustdesk&#xff0c;其1.2.3 版需要gstreamer1.0-pipewire软件包&#xff0c;但是此软件包仅适用于 Ubuntu 22.04、22.10、23.04 和 2…...

Vue原生写全选反选框

效果 场景&#xff1a;Vue全选框在头部&#xff0c;子框在v-for循环内部。 实现&#xff1a;点击全选框&#xff0c;所有子项选中&#xff0c;再次点击取消&#xff1b;子项全选中&#xff0c;全选框自动勾选&#xff0c;子项并未全选&#xff0c;全选框不勾选&#xff1b;已选…...

typescript学习回顾(三)

今天继续来分享ts的相关概念&#xff0c;枚举&#xff0c;ts模块化&#xff0c;接口和类型兼容性 ts的扩展类型&#xff1a;类型别名&#xff0c;枚举&#xff0c;接口和类 枚举 基础概念 枚举通常用于约束某个变量的取值范围。当然字面量和联合类型配合使用&#xff0c;也可…...

算尽天下财,铸就大明梦 —— 大明钱算子夏元吉的传奇一生

仕途生涯开始&#xff1a;洪武二十三年&#xff08;1390年&#xff09;&#xff0c;夏元吉因精通《诗经》&#xff0c;由湖广乡荐参加礼部组织的会试&#xff0c;虽未中举&#xff0c;但他并未气馁&#xff0c;反而更加努力地学习。洪武二十四年&#xff08;1391年&#xff09;…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...