Java学习 - Maven - 常用命令(学习精选)

前言

在上一篇文章中,我们对 Maven 有了初步的了解,包括它的定义、安装步骤以及一些基本的配置方法。Maven 是一个强大的项目管理工具,它可以帮助开发者自动化构建过程,并且管理项目的依赖关系。

今天,我们将深入探讨 Maven 的核心概念,并学习一些在日常使用中非常实用的命令。

Maven 核心

构建

所谓构建,就是指项目的构建,它是面向过程的,是一系列步骤的总和,主要包括项目代码的编译、运行、测试、打包以及部署等等。而 Maven 所支持的构建主要有如下几种:

  1. 清理:删除之前编译产生的文件,为新的代码编译做好准备;
  2. 编译:将源代码编译为执行代码,支持批量编译;
  3. 测试:通过执行测试代码,验证功能是否正常,而且它也是支持批量测试的;
  4. 报告:通过执行测试,生成测试结果的文件;
  5. 打包:讲项目中的 class 文件、配置文件打包到一个压缩文件中。对于一般程序,打包的压缩文件扩展名通常是 .jar,而对于 Web 应用,则起压缩文件扩展名通常是 .war
  6. 安装:把打包好的文件安装到本地仓库;
  7. 部署:让程序跑起来。

Maven 核心概念

  1. pom:项目对象模型,Maven 将项目当做一个模型,用于控制 Maven 构建项目的过程,通过它来管理 jar 依赖;
  2. 目录结构:Maven 的目录和文件位置都是约定俗成的;
  3. 坐标:用于表示资源的唯一标识;
  4. 依赖管理:使用 jar 文件来管理项目;
  5. 仓库管理:资源存放的路径;
  6. 生命周期:Maven 工具构建项目的过程;
  7. 插件和目标:执行 Maven 构建是的工具就是插件
  8. 继承
  9. 聚合

常用命令

Maven 中的一些常见命令如下:

命令含义功能
mvn clean清理用于清理已编译好的文件
mvn compile编译将 Java 源代码编译成字节码 .class 文件
mvn test测试项目测试
mvn package打包根据用户配置,将项目打包为 jar 包或 war
mvn install安装手动向本地仓库安装一个 jar
mvn deploy上传jar 上传到私服

利用 Archetype 来生成项目骨架

实际上,为了更快捷的创建 Maven 项目骨架,我们可以使用 maven archetype 来创建,创建过程如下:

  1. 首先进入你要创建项目骨架的目录,然后执行如下命令:
mvn archetype:generate
  1. 然后会有很长的输出,有多种可用的 Archetype 供你选择,选择你所需要的,然后输入对应编号即可;

在这里插入图片描述

  1. 接着会让你输入 groupIdartifactIdversionpackage 等信息;

在这里插入图片描述

  1. 再接着让你确认相关信息;

在这里插入图片描述

  1. 最后确认无误后,回车生成即可。

项目结构

项目生成后的目录中主要包含如下文件:

在这里插入图片描述

其中 src 目录包含了项目的主代码和资源,同时还包括了测试相关的代码以及资源。而 pom.xml 则定义了项目的所有配置。

假设我们有一个 HelloWorld 的项目,我们利用 Maven 来进行管理时,其项目结构大致应该是如下:

HelloWorld/
    | ----src/ |
    | -------- || main/ |
	| ----- ||     |  | java/ |
| --- ||     | resources/ |
| --- | ---------- || test/ |
| ----- ||     | java/ |
| --- ||  |resources/
    |----pom.xml

其中 HelloWorld 是根目录,也就是我们的工程名,而 src 目录下主要是存放源代码,其下有主要分为 javaresourcesjava 目录主要用于存放程序包以及程序包中的 Java 文件,resources 目录则是存放程序中所要使用的配置文件。

test 目录结构同 src,只不过顾名思义,这里主要是存放用于测试的代码和配置文件,而且这不是一个必选项,我们可以根据自己的需要进行选择。

最后则是 pom.xml,这个每个 Maven 所管理项目的核心文件,这是必须的,后续的依赖管理等工作都基于此文件来操作。

在这里插入图片描述

在这里插入图片描述

最后

如果觉得内容有帮助,可以通过点赞和关注来支持作者。同时,作者也预告了下一期内容,将深入探讨如何使用 Maven 进行依赖管理,这是一个对于任何 Maven 用户来说都非常重要的话题。

通过今天的学习,读者应该对 Maven 的使用有了更深入的了解,包括如何执行基本的构建命令,如何利用 Archetype 生成项目,以及 Maven 项目的目录结构。这些知识对于提高开发效率和项目质量都是非常有价值的。期待下一期内容,继续深入了解 Maven 的强大功能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高光谱图像聚类的像素-超像素对比学习与伪标签校正

Pixel-Superpixel Contrastive Learning and Pseudo-Label Correction for Hyperspectral Image Clustering 文章目录 Pixel-Superpixel Contrastive Learning and Pseudo-Label Correction for Hyperspectral Image Clustering摘要引言相关方法对比学习 方法超像素对比学习像素…

攻防世界---misc---Excaliflag

1、题目描述,下载附件是一张图片 2、用winhex分析,没有发现奇怪的地方 3、在kali中使用binwalk -e 命令,虽然分离出来了一些东西,但是不是有用的 4、最后用stegsolve分析,切换图片,发现有字符串&#xff0c…

番外篇 | 利用华为2023最新Gold-YOLO中的Gatherand-Distribute对特征融合模块进行改进

前言:Hello大家好,我是小哥谈。论文提出一种改进的信息融合机制Gather-and-Distribute (GD) ,通过全局融合多层特征并将全局信息注入高层,以提高YOLO系列模型的信息融合能力和检测性能。通过引入MAE-style预训练方法,进一步提高模型的准确性。🌈 目录 🚀1.论文解…

MyBatisPlus总结二

MybatisPlus总结一在这: MybatisPlus总结1/2-CSDN博客 六、分页查询: 6.1.介绍: MybatisPlus内置了分页插件,所以我们只需要配置一个分页拦截器就可以了,由于不同的数据库的分页的方式不一样,例如mysql和…

运维实用小脚本,登录即自动显示系统信息

今天给大家安利一个超级实用的Linux小技巧,让你每次登录终端时都能感受到满满的科技感和效率爆棚! 你是否厌倦了每次手动检查系统状态,像内存使用、CPU负载这些繁琐操作?别担心,一个小调整,让这一切自动化…

HC-05蓝牙模块配置连接和使用

文章目录 1. 前期准备 2. 进入AT模式 3. 电脑串口配置 4. 配置过程 5. 主从机蓝牙连接 6. 蓝牙模块HC-05和电脑连接 1. 前期准备 首先需要准备一个USB转TTL连接器,电脑安装一个串口助手,然后按照下面的连接方式将其相连。 VCCVCCGNDGNDRXDTXDTXD…

LeetCode ---400周赛

题目列表 3168. 候诊室中的最少椅子数 3169. 无需开会的工作日 3170. 删除星号以后字典序最小的字符串 3171. 找到按位与最接近 K 的子数组 一、候诊室中的最少椅子数 简单的模拟题,我们可以这样来模拟:当有顾客来时,我们加一把椅子&…

如何使用GPT-4o函数调用构建一个实时应用程序?

本教程介绍了如何使用OpenAI最新的LLM GPT-4o通过函数调用将实时数据引入LLM。 我们在LLM函数调用指南(详见https://thenewstack.io/a-comprehensive-guide-to-function-calling-in-llms/)中讨论了如何将实时数据引入聊天机器人和代理。现在,我们将通过将来自Fligh…

React + SpringBoot实现图片预览和视频在线播放,其中视频实现切片保存和分段播放

图片预览和视频在线播放 需求描述 实现播放视频的需求时,往往是前端直接加载一个mp4文件,这样做法在遇到视频文件较大时,容易造成卡顿,不能及时加载出来。我们可以将视频进行切片,然后分段加载。播放一点加载一点&am…

【稳定检索/投稿优惠】2024年材料科学与能源工程国际会议(MSEE 2024)

2024 International Conference on Materials Science and Energy Engineering 2024年材料科学与能源工程国际会议 【会议信息】 会议简称:MSEE 2024大会地点:中国苏州会议官网:www.iacmsee.com会议邮箱:mseesub-paper.com审稿结…

【基于C++与OpenCV实现魔方图像识别和还原算法】施工总览图

文章目录 主要效果展示思维导图魔方还原算法 本系列博客长期更新,分为两大部分 OpenCV实现魔方六面识别 C编写科先巴二阶段还原算法实现三阶魔方的还原 主要效果展示 摄像头识别六面 3D图像构建,提供还原公式 动画演示还原过程 思维导图 魔方还原算法 参…

Java Web学习笔记26——Element常用组件

常见组件: 就是一个复制和粘贴的过程。 Table表格:用于展示多条结构类的数据,可对数据进行排序、筛选、对比或其他自定义操作。 常见组件-分页主键: Pagination:分页:当数据量比较多时,使用分…

sqlmap直接嗦 dnslog注入 sqllibs第8关

dnslog注入是解决注入的时候没有回显的情况,通过dns外带来进行得到我们想要的数据。 我们是用了dns解析的时候会留下记录,这时候就可以看见我们想要的内容。 这个时候我们还要了解unc路径以及一个函数load_file()以及concat来进行注入。看看我的笔记 unc…

atmel studio 无法通过printf打印浮点数到串口

择右侧的项目,右键,选择properties 系统把它优化了,所以删除,即可 然后,选择相应波特率,效验位,数据位是否正确,即可

Transformer 动画讲解:多层感知机

暑期实习基本结束了,校招即将开启。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。提前准备才是完全之策。 最近,我们又陆续整理了很多大厂的面试题&#xff0c…

Golang | Leetcode Golang题解之第138题随机链表的复制

题目: 题解: func copyRandomList(head *Node) *Node {if head nil {return nil}for node : head; node ! nil; node node.Next.Next {node.Next &Node{Val: node.Val, Next: node.Next}}for node : head; node ! nil; node node.Next.Next {if…

项目bug1

大项目测bug的时候让输入数字,如果不是则捕获异常,提示错误,几段很简单的代码: System.out.println("请输入要存入的金额"); Scanner sc new Scanner(System.in); while(true) {try {money sc.nextInt();break;} cat…

ctfshow-web入门-命令执行(web41_exp与分析)

过滤不严,命令执行 preg_match(/[0-9]|[a-z]|\^|\|\~|\$|\[|\]|\{|\}|\&|\-/i, $c) 过滤掉了数字、字母以及一些符号,之前接触过的无字母 rce 是取反编码再取反,采用不可见字符去绕过正则,但是这里取反符号被过滤掉了&#x…

mysql (事物)

一.什么是事物 事物是一组操作的集合,不可分割的工作单位,事物会把所有的操作当作一个整体一起向系统提交或撤销操作请求,就是这些操作要么一起成功要么一起失败。 二.事物操作 (这个就是一个理解) 1.事务特性 原子性…

java中的异常-异常处理(try、catch、finally、throw、throws)+自定义异常

一、概述 1、java程序员在编写程序时提前编写好对异常的处理程序,在程序发生异常时就可以执行预先设定好的处理程序,处理程序执行完之后,可以继续向后执行后面的程序 2、异常处理程序是在程序执行出现异常时才执行的 二、5个关键字 1、tr…