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 的主要功能包括:

  1. 项目对象模型(Project Object Model,POM):Maven 使用 POM 文件来描述项目的配置信息,包括项目的依赖、插件、构建过程等。POM 文件是一个 XML 文件,位于项目根目录下。

  2. 依赖管理:Maven 提供了强大的依赖管理机制,可以方便地管理项目所需的外部库和组件。通过在 POM 文件中声明依赖,Maven 可以自动下载并管理这些依赖,确保项目的构建和运行所需的依赖项可用。

  3. 构建生命周期:Maven 定义了一套标准的构建生命周期,由一系列阶段(phase)组成。每个阶段代表了构建过程中的一个特定任务,如编译代码、运行测试、打包等。开发人员可以通过执行特定的命令来触发相应的构建阶段,Maven 会自动执行相关任务。

  4. 插件系统: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 compilemvn testmvn package 等,来完成项目的构建和测试等任务。

mvn validate

        验证项目的基本正确性,检查项目是否存在问题。

        当运行 mvn validate 命令时,Maven 会执行一系列验证操作,包括检查项目的结构、检查项目的依赖关系是否正确、检查配置文件的有效性等。这个命令可以在开始构建之前,确保项目的基本要求得到满足。

    mvn validate 命令通常用于快速检查项目的基本设置是否正确,如项目的 POM 文件是否有效、目录结构是否符合规范等。如果在验证过程中发现任何错误或问题,Maven 会报告并给出相应的建议。

        执行 mvn validate 命令后,如果没有发现任何问题,可继续执行其他的 Maven 构建命令,如 mvn compilemvn testmvn 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 等。该命令将会执行以下步骤:

  1. 编译项目代码
  2. 打包生成jar或war包
  3. 将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 仓库中,以便其他项目可以引用该构建结果。

  1. 编译项目代码
  2. 打包生成jar或war包
  3. 将jar或war包安装到本地maven库中

        执行 mvn install 命令后,Maven 将会自动执行项目中定义的构建过程,包括编译代码、运行测试等。然后,Maven 将会将编译后的结果打包,并将其安装到本地的 Maven 仓库中,以便其他项目可以引用。

        请注意,执行 mvn install 命令时,可能还需要指定其他参数或配置选项,以便根据项目的需要进行自定义安装。具体的参数和配置选项可以参考 Maven 的文档或者项目的说明文件。

mvn site

        生成项目的站点文档。site指的是一个特定的阶段,其目的是生成与项目相关的站点文档。这些站点文档可以为项目的开发者、用户、以及其他利益相关者提供有关项目的详细信息。

Maven的站点文档通常包括以下内容:

  1. 项目信息:这部分提供了关于项目的基本信息,如描述、开发者、许可证等。
  2. Javadocs:自动生成的Java文档,描述项目中的类、接口和方法。
  3. 报告:这包括各种与项目相关的报告,如单元测试报告、代码覆盖率报告、代码质量报告等。
  4. 依赖关系:列出项目所依赖的其他项目或库。
  5. 项目继承关系:如果项目是多模块的,这部分将展示模块之间的关系。
  6. Maven使用其 maven-site-plugin插件来生成这些站点文档。此插件集成了多种报告插件,使得在站点生成过程中能够自动产生各种有用的报告。

        生成的站点文档默认放在 target/site目录下,可以直接在浏览器中打开查看。为了更方便地共享和查看,许多项目会将这些站点文档发布到其官方网站或其他适当的位置。

mvn deploy

        用于将项目构建结果部署到远程 Maven 仓库中。执行该命令会编译项目代码,并将编译后的结果打包成 JAR 文件或其他形式的分发包,然后将其部署到指定的远程 Maven 仓库中,以便其他项目可以引用。该命令会执行以下步骤:

  1. 编译项目代码
  2. 打包生成jar或war包
  3. 将jar或war包安装到远程maven库中

        执行 mvn deploy 命令后,Maven 将会自动执行项目中定义的构建过程,包括编译代码、运行测试等。然后,Maven 将会将编译后的结果打包,并将其部署到指定的远程 Maven 仓库中。

        请注意,执行 mvn deploy 命令时,还需要指定其他参数或配置选项,以便根据项目的需要进行自定义部署。具体的参数和配置选项可以参考 Maven 的文档或者项目的说明文件。同时,需要在项目的 pom.xml 文件中配置正确的远程仓库信息,以便 Maven 知道要将构建结果部署到哪个仓库。

更多消息资讯,请访问昂焱数据。昂焱数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【产品经理】AI在SaaS产品中的应用及挑战

随着ChatGPT大模型在全球的爆火,AI迅速在各个行业内,助力于各行业的效率提升。而SaaS领域,AI同样也大有可为。 AI(人工智能,Artificial Intelligence的缩写)近一年来一直处于舆论风口,随着ChatG…

「Linux」进程等待与替换

💻文章目录 📄前言进程等待进程等待的概念进程等待的方法 进程替换进程替换的概念替换方式 📓总结 📄前言 在如今的时代,多进程编程已经变成了必不可少的一部分,而进程等待、进程替换这两个概念都是作为多进…

【matlab程序】图像最大化填充画布

【matlab程序】图像最大化填充画布 不做任何修饰: 修饰: 图片 往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深nc文件并水深地形图 【python海洋专题三】图像修饰之画布和坐标轴 【Pytho…

2023-简单点-树莓派-camera module 3介绍

Raspberry Pi Camera Module 3 介绍开头先说,注意事项libcamera感光芯片和驱动的兼容图额外:不同module的对应的参数图用bullseye系统测试摄像头预览窗口拍摄静态图片bayer raw图像获取超长曝光视频流raw视频流 ref 介绍 树莓派镜像在Bullseye版本之后&…

高效的将两个文件夹中多余的文件删除

高效的将两个文件夹中多余的文件删除 解决方案 之前使用的是这个方法,但是图像太多,需要删除的有70W张,得删10多天。。 将两个文件夹中重复的图象删除 解决方案 先将image图像复制一份,然后改名为txt import osdef change_file…

论文笔记:Confidential Assets

Confidential Assets 描述了一种称为“保密交易”的方案,该方案模糊了所有UTXO的金额,同时保持了不创建或销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”,一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。将保密交易扩…

Attention机制(笔记)

参考:2.3.2注意力机制-part1_哔哩哔哩_bilibili 什么是attention? 答:注意力放在事物最有辨识度的部分 attention计算机制: 为什么用这个公式可以得到attention? 补充说明(chatGPT给出的解释)&…

值得收藏的15 个好用的 iPad/iPhone 数据恢复工具

有时您需要从移动或平板设备恢复关键数据。 许多人已经开始在手机上存储重要文件,因为他们可以在旅途中或现在几乎在任何情况下轻松访问数据。 不言而喻; 您只需在手机上轻轻一按,即可轻松访问电子邮件、共享图片、编辑和共享文档、支付账单等。一般来…

【Openstack Train安装】七、glance安装

Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。Glance提供Restful API可以查询虚拟机镜像的me…

Flutter创建TabBar

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

【实战教程】PHP如何轻松对接阿里云直播?

1. 配置阿里云直播的推流地址和播放地址 使用阿里云直播功能前,首先需要在阿里云控制台中创建直播应用,然后获取推流地址和播放地址。 推流地址一般格式为: rtmp://{Domain}/{AppName}/{StreamName}?auth_key{AuthKey}-{Timestamp}-{Rand…

什么是API? (应用程序编程接口)

我们经常听到 API 这个专业名称。那么什么是 API 呢? 定义 API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软…

【电路笔记】-分流器

分流器 文章目录 分流器1、概述2、通用/网络配置3、无功分流器3.1 电阻电容分流器3.2 电阻-电感分流器 4、总结 我们在之前关于分压器的文中已经看到,分压过程是通过在串联配置中关联相同的组件来实现的。 在本文中,我们将重点关注电流分频器执行的电流分…

四个方法,设置excel文件只读模式

由于excel文件经常用于数据文件,数据就需要特别保护,大家可能需要将文件设置为只读模式来保护数据不被修改,Excel文件想要设置为只读的方法有很多,今天分享四种方法给大家: 方法一:文件属性 右键点击文件…

浅谈交流电表在印度充电桩生产厂家的应用

一.背景: 近几年为应对温室气体的排放导致的全球变暖、气候变化等问题,各大国纷纷对焦推进电动汽车,从而减少传统燃油汽车带来的大量温室气体排放。而推进新能源汽车的各项举措之中,充电桩的基础建设,又是其中的重中之重&#xf…

开源播放器GSYVideoPlayer + ViewPager2 源码解析

开源播放器GSYVideoPlayer ViewPager2 源码解析 前言一、GSYVideoPlayer🔥🔥🔥是什么?二、源码解析1.ViewPager2Activity 总结 前言 本文介绍GSYVideoPlayer源码中关于ViewPager2 GSYVideoPlayer 实现的滑动播放列表的实现原理。…

VMD-Attention-LSTM 价格预测实战

VMD-Attention-LSTM时间序列价格预测实战 完整数据代码可直接运行_哔哩哔哩_bilibili 数据展示:数据有几万条 足够的 主要模型代码: import tensorflow as tfdef attention_3d_block(inputs,TIME_STEPS,SINGLE_ATTENTION_VECTOR):# inputs.shape = (batch_size, time_steps,…

区间合并笔记

文章目录 什么是区间合并怎么做区间合并AcWing 803. 区间合并思路解析my - CODEdalao の CODE 什么是区间合并 区间合并是指给定多个区间,让你将重合的区间合并为一个区间 怎么做区间合并 区间合并类问题大多三个办法: 按左端点排序按右端点排序按左右…

Apache Doris 整合 FLINK CDC 、Paimon 构建实时湖仓一体的联邦查询入门

1.概览 多源数据目录(Multi-Catalog)功能,旨在能够更方便对接外部数据目录,以增强Doris的数据湖分析和联邦数据查询能力。 在之前的 Doris 版本中,用户数据只有两个层级:Database 和 Table。当我们需要连…

一键删除方舟编译器缓存文件js、js.map插件ArkCompilerSupport

新手学习鸿蒙开发,发现DevEco Studio编译过种会生成js、js.map,在论坛上看了其它开发者也提了问题但无没解决,写了一个插件大家试下: https://plugins.jetbrains.com/plugin/23192-arkcompilersupport 源码:https://g…