maven 常用命令解析
目录
maven 是什么
Maven 目录结构
maven 常用命令解析
mvn clean
mvn validate
mvn compile
mvn test
mvn package
mvn verify
mvn install
mvn site
mvn deploy
maven 是什么
Maven 是一个流行的项目管理和构建工具,用于帮助开发人员管理 Java 项目的构建、依赖管理和文档生成等任务。它提供了一种标准化的项目结构和一套规范来管理项目的生命周期。
Maven 的主要功能包括:
-
项目对象模型(Project Object Model,POM):Maven 使用 POM 文件来描述项目的配置信息,包括项目的依赖、插件、构建过程等。POM 文件是一个 XML 文件,位于项目根目录下。
-
依赖管理:Maven 提供了强大的依赖管理机制,可以方便地管理项目所需的外部库和组件。通过在 POM 文件中声明依赖,Maven 可以自动下载并管理这些依赖,确保项目的构建和运行所需的依赖项可用。
-
构建生命周期:Maven 定义了一套标准的构建生命周期,由一系列阶段(phase)组成。每个阶段代表了构建过程中的一个特定任务,如编译代码、运行测试、打包等。开发人员可以通过执行特定的命令来触发相应的构建阶段,Maven 会自动执行相关任务。
-
插件系统:Maven 的插件系统允许开发人员扩展和定制构建过程。插件可以执行各种任务,如静态代码分析、文档生成、部署等。Maven 提供了一些默认的插件,并且允许用户自定义和配置插件。
Maven 的优势在于它的标准化和集成化,通过 Maven,开发人员可以更方便地管理项目的依赖、构建过程和文档生成,提高开发效率并保持项目的一致性。
Maven 目录结构
Maven 有一种约定的目录结构,这个目录结构被广泛采用并被认为是良好的项目组织方式。以下是 Maven 的标准目录结构:
Maven目录结构示例:
这里是对目录结构的解释:
src/main/java
:主要的 Java 源代码目录,包含项目的主要业务逻辑实现。src/main/resources
:主要的资源文件目录,包含配置文件、静态文件等。src/main/webapp
:存放 Web 应用程序的资源文件,如 JSP 文件、HTML 文件等。同时还包含一个WEB-INF
文件夹,用于存放 Web 应用程序的配置文件,例如web.xml
。src/test/java
:测试用例的 Java 源代码目录,包含针对项目的单元测试、集成测试等。src/test/resources
:测试用例的资源文件目录,包含针对测试用例的配置文件、测试数据等。target
:构建产物输出目录,包含编译后的类文件、打包后的 JAR 文件等。
另外,项目根目录下的 pom.xml
是 Maven 的项目配置文件,用于定义项目的依赖、插件、构建配置等信息。
这种标准的目录结构有助于保持项目的整洁和可维护性,并且符合 Maven 的约定和默认行为。但此目录结构并不是强制要求的,可根据项目的需求进行适当的调整和扩展。
maven 常用命令解析
下面 Maven 构建工具中的一些常用命令。下面是每个命令的作用:
mvn clean
清除项目目录下生成的编译输出和构建产物,包括 target 目录以及其他生成的文件。该命令常在重新构建项目之前运行。
mvn clean
命令通常在开始构建之前执行,以清理之前构建留下的临时文件和输出。可确保项目从一个空白的状态开始构建,并且清理掉不需要的构建产物。
执行 mvn clean
命令后,可继续执行其他的 Maven 构建命令,如 mvn compile
、mvn test
、mvn package
等,来完成项目的构建和测试等任务。
mvn validate
验证项目的基本正确性,检查项目是否存在问题。
当运行 mvn validate
命令时,Maven 会执行一系列验证操作,包括检查项目的结构、检查项目的依赖关系是否正确、检查配置文件的有效性等。这个命令可以在开始构建之前,确保项目的基本要求得到满足。
mvn validate
命令通常用于快速检查项目的基本设置是否正确,如项目的 POM 文件是否有效、目录结构是否符合规范等。如果在验证过程中发现任何错误或问题,Maven 会报告并给出相应的建议。
执行 mvn validate
命令后,如果没有发现任何问题,可继续执行其他的 Maven 构建命令,如 mvn compile
、mvn test
、mvn package
等,来进一步构建、测试和打包项目。
mvn compile
编译项目的源代码。该命令将会编译src/main/java目录下的java源代码,并将编译后的class文件存放在target/classes目录下。
执行 mvn compile
命令可以确保项目的源代码能够成功编译,同时也会编译项目所依赖的第三方库(如果有的话)。这是构建过程中的一个重要步骤,因为编译后的类文件将会被用于后续的测试、打包等操作。
如果在执行 mvn compile
命令时发现了编译错误,Maven 会输出错误信息,帮助定位和解决问题。一旦项目成功编译,可以继续执行其他 Maven 构建命令,如运行单元测试、打包应用程序等。
mvn test
执行项目的单元测试。该命令会将运行src/test/java目录下所有以单元测试类,并输出测试结果。
执行 mvn test
命令时,Maven 会输出每个测试类的执行结果,包括测试通过的数量、失败的数量和跳过的数量等信息。如果有测试失败,Maven 会显示详细的错误信息,帮助调试和修复问题。
通过运行单元测试,验证代码的正确性,确保项目在修改或重构后仍能正常工作。单元测试是保证代码质量和可靠性的重要手段,它可以帮助捕捉潜在的 bug,并提供一个验证代码功能的基准。
注意:在运行 mvn test
前,确保已经配置好了项目的依赖和测试框架,以及正确编写了单元测试类和测试方法。
mvn package
将编译后的代码打包成可分发的格式,如 JAR、WAR 等。该命令将会执行以下步骤:
- 编译项目代码
- 打包生成jar或war包
- 将jar或war包安装到本地maven库中
在执行 mvn package
命令之前,需确保已经安装了 Maven,并且已经将项目的根目录切换到包含 pom.xml
文件的目录下。
执行 mvn package
命令后,Maven 将会自动执行项目中定义的构建过程,包括编译代码、运行测试等。最终,Maven 会将编译后的代码打包成一个可执行的 JAR 文件,并将其输出到指定的位置。
mvn verify
对打包后的文件进行验证,以确保其有效性。
执行 mvn verify
命令后,Maven 将会自动执行项目中定义的测试和检查过程,包括单元测试、集成测试、代码风格检查、代码覆盖率检查等。如果任何一个测试或者检查失败,Maven 将会输出相应的错误信息。
请注意,执行 mvn verify
命令时,还需要指定其他参数或配置选项,以便根据项目的需要进行自定义验证。具体的参数和配置选项可以参考 Maven 的文档或者项目的说明文件。
mvn install
将打包的文件安装到本地 Maven 仓库,供其他项目使用。用于将项目构建结果安装到本地 Maven 仓库中。执行该命令会编译项目代码,并将编译后的结果打包成 JAR 文件或其他形式的分发包,然后将其安装到本地的 Maven 仓库中,以便其他项目可以引用该构建结果。
- 编译项目代码
- 打包生成jar或war包
- 将jar或war包安装到本地maven库中
执行 mvn install
命令后,Maven 将会自动执行项目中定义的构建过程,包括编译代码、运行测试等。然后,Maven 将会将编译后的结果打包,并将其安装到本地的 Maven 仓库中,以便其他项目可以引用。
请注意,执行 mvn install
命令时,可能还需要指定其他参数或配置选项,以便根据项目的需要进行自定义安装。具体的参数和配置选项可以参考 Maven 的文档或者项目的说明文件。
mvn site
生成项目的站点文档。site指的是一个特定的阶段,其目的是生成与项目相关的站点文档。这些站点文档可以为项目的开发者、用户、以及其他利益相关者提供有关项目的详细信息。
Maven的站点文档通常包括以下内容:
- 项目信息:这部分提供了关于项目的基本信息,如描述、开发者、许可证等。
- Javadocs:自动生成的Java文档,描述项目中的类、接口和方法。
- 报告:这包括各种与项目相关的报告,如单元测试报告、代码覆盖率报告、代码质量报告等。
- 依赖关系:列出项目所依赖的其他项目或库。
- 项目继承关系:如果项目是多模块的,这部分将展示模块之间的关系。
- Maven使用其 maven-site-plugin插件来生成这些站点文档。此插件集成了多种报告插件,使得在站点生成过程中能够自动产生各种有用的报告。
生成的站点文档默认放在 target/site目录下,可以直接在浏览器中打开查看。为了更方便地共享和查看,许多项目会将这些站点文档发布到其官方网站或其他适当的位置。
mvn deploy
用于将项目构建结果部署到远程 Maven 仓库中。执行该命令会编译项目代码,并将编译后的结果打包成 JAR 文件或其他形式的分发包,然后将其部署到指定的远程 Maven 仓库中,以便其他项目可以引用。该命令会执行以下步骤:
- 编译项目代码
- 打包生成jar或war包
- 将jar或war包安装到远程maven库中
执行 mvn deploy
命令后,Maven 将会自动执行项目中定义的构建过程,包括编译代码、运行测试等。然后,Maven 将会将编译后的结果打包,并将其部署到指定的远程 Maven 仓库中。
请注意,执行 mvn deploy
命令时,还需要指定其他参数或配置选项,以便根据项目的需要进行自定义部署。具体的参数和配置选项可以参考 Maven 的文档或者项目的说明文件。同时,需要在项目的 pom.xml
文件中配置正确的远程仓库信息,以便 Maven 知道要将构建结果部署到哪个仓库。
更多消息资讯,请访问昂焱数据。昂焱数据
相关文章:

maven 常用命令解析
目录 maven 是什么 Maven 目录结构 maven 常用命令解析 mvn clean mvn validate mvn compile mvn test mvn package mvn verify mvn install mvn site mvn deploy maven 是什么 Maven 是一个流行的项目管理和构建工具,用于帮助开发人员管理 Java 项目的…...

ESP32-Web-Server编程-JS 基础 1
ESP32-Web-Server编程-JS 基础 1 概述 前述分别在 HTML 基础 和 CSS 基础 中介绍了 HTML、CSS 的基本内容。HTML 定义了网页中包含哪些对象,CSS 定义了对象的显示样式。JavaScript(LiveScript)是一种运行于客户端的解释性脚本语言,使 HTML 页面更具动态…...
代码随想录算法训练营第23天|● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树 ● 总结篇
108. 将有序数组转换为二叉搜索树 简单 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 1: …...
UniApp 中的 u-input 属性讲解
在 UniApp 中,u-input 是一个常用的组件,用于接收用户的输入。它具有多种属性,用于控制输入框的样式和行为。下面我将为您讲解一些常用的 u-input 属性。 基本属性 value:表示输入框的初始值,可以使用 v-model 进行双…...

解决方案:新版WPS-右键粘贴值到可见单元格没有了
WPS筛序后复制,并且粘贴到可见单元格 (如果直接粘贴数据会乱掉) 旧版WPS,右键就能出现 但是新版WPS不是在这里(方法1) 新版WPS(方法2) 视频详细教程链接:解决方案&…...
pat模拟题—7-11 两个序列的中位数
一个长度为n(n⩾1)的升序序列S,处在第2n个位置的数称为序列S的中位数(median number),例如,序列S1{10,13,14,16,18,19}的中位数是14。两个序列的中位数是它们所有元素的升序序列的中位数,例如,S2{2,4,8,9,20,21},则S1和S2的中位数是13。现有…...
Java中的i++是原子操作吗?
我们都知道i分为三步进行,分别是1:取到当前i的值,2:,3:将最终结果赋值 因此我们可通过创建两个线程,对同一个变量count,一个线程对count进行递增操作,另一个线程对count进行递减操作。每个线程…...
git commit message 书写规范
在使用 Git 提交时,遵循良好的提交消息规范可以提高代码的可读性和可维护性。以下是一些常见的 Git 提交消息书写规范: 提交消息格式:一个提交消息通常包含三个部分:标题、空行和正文。它们之间使用空行分隔。 复制 <标题>&…...
sql 注入 ctf wiki
部分转载ctf-wiki 判闭合形式: 哪个报错就是哪种 1,1’,1’‘,1’,1’(双引号带括号) 万能密码: admin’ – admin’ # admin’/* ’ or 11– ’ or 11# ’ or 11/* ) or ‘1’1– ) or (‘1’1– 数据库名: SEL…...

Flutter创建TabBar
使用TabBar和TabBarView来创建一个包含"首页"、"分类"和"我的"的TabBar。每个Tab对应一个Tab控件,TabBarView中的每个页面对应一个Widget。 1.Tab使用自定义图标和颜色 一般UI设计的图会带渐变色之类的,应该保持图片的原…...

双流网络论文精读笔记
精读视频:双流网络论文逐段精读【论文精读】_哔哩哔哩_bilibili Two-Stream Convolutional Networks for Action Recognition in Videos 传统的神经网络难以学习到物体的运动信息,双流网络则通过光流将物体运动信息抽取出来再传递给神经网络 给模型提供…...

机器人与3D视觉 Robotics Toolbox Python 一 安装 Robotics Toolbox Python
一 安装python 库 前置条件需要 Python > 3.6,使用pip 安装 pip install roboticstoolbox-python测试安装是否成功 import roboticstoolbox as rtb print(rtb.__version__)输出结果 二 Robotics Toolbox Python样例程序 加载机器人模型 加载由URDF文件定义…...

JS之Object.defineProperty方法
给对象添加属性的方法有许多,这次让我为大家介绍一种给对象添加属性的静态方法吧! 语法:Objcet.defineProperty(对象的名称,“添加的键名”,{value:键值}) const obj {name:"张三",age:18}// 我…...

卷积神经网络(CNN)注意力检测
文章目录 一、前言二、前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)2. 导入数据3. 查看数据 二、数据预处理1.加载数据2. 可视化数据4. 配置数据集 三、调用官方网络模型四、设置动态学习率五、编译六、训练模型七、模型评估1. Accuracy与Loss图2. …...
4. 权限,特权
对数据段特权检查对直接转移的代码段特权检查栈段的检查调用门的检查 权限问题: 由于CPL,DPL 无法完整表达权限的问题. 例如用户程序(CPL3)通过调用门(将调用到内核过程,从低权限到高权限)执行,此时CPL0,此时可以为所欲为.因此加入RPL.此参数由操作系统来保证,CPU仅使用 RPL:…...
云原生系列Go语言篇-泛型Part 2
类型推导和泛型 就像在使用:时支持类型推导一样,在调用泛型函数时Go同样支持类型推导。可在上面对Map、Filter和Reduce调用中看出。有些场景无法进行类型推导(如类型参数仅用作返回值)。这时,必…...

借助ETL快速查询金蝶云星空表单信息
随着数字化转型的加速,企业信息化程度越来越高,大量的数据产生并存储在云端,需要进行有效的数据管理和查询。金蝶云星空是金蝶云旗下的一款云ERP产品,为企业提供了完整的业务流程和数据管理功能,因此需要进行有效的数据…...
基于深度学习的驾驶员状态监测预警系统(正文)
摘 要 近年来驾驶员因疲劳驾驶而造成的交通事故逐年增多,驾驶员的驾驶状态对道路和人身安全产生重大影响,因此做好驾驶员驾驶状态的管理及预警是非常有必要的。 随着深度学习在目标检测算法应用的不断深入,YOLOv5等目标检测算法也相继具有了广…...
读书笔记之《价值》张磊
读书笔记之《价值》张磊 自序 这是一条长期主义之路 长期主义——把时间和信念投入能够长期产生价值的事情中,尽力学习最有效率的思维方式和行为标准,遵循第一性原理,永远探求真理。 真正的投资,有且只有一条标准,那…...

【shell】文本三剑客之sed详解
目录 一、sed简介(行编辑器) 二、基本用法 三、sed脚本格式(匹配地址 脚本命令) 1、不给地址,那么就是针对全文处理 2、单地址,表示#,指定的行,$表示最后一行,/pattt…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...