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 的强大功能。

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

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

相关文章

上位机图像处理和嵌入式模块部署(f407 mcu和其他mcu品类的选择)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很多朋友读书的时候学的是stm32,工作中用的也是stm32。这本来问题不大,但是过去两三年的经历告诉我们,mcu的使用…

AngularJS 表单

AngularJS 表单 AngularJS 是一个由 Google 维护的开源前端框架,它允许开发者使用 HTML 作为模板语言,并扩展 HTML 的语法,以清晰简洁地表达应用的组件。AngularJS 的核心特性之一是双向数据绑定,这极大地简化了 DOM 操作和事件处理。在 AngularJS 中,表单处理是一个重要…

EntitiesSample_12. FixedTimestep

示例的知识点 1.标签[UpdateInGroup(typeof(FixedStepSimulationSystemGroup))] 这个系统标签标识这,系统在FixedStepSimulationSystemGroup这个组里面执行更新逻辑,FixedStepSimulationSystemGroup是一个固定真速度的仿真系统组 2.给实体身上的组件…

【设计模式】行为型设计模式之 职责链模式,探究过滤器、拦截器、Mybatis插件的底层原理

一、介绍 职责链模式在开发场景中经常被用到,例如框架的过滤器、拦截器、还有 Netty 的编解码器等都是典型的职责链模式的应用。 标准定义 GOF 定义:将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求,将这些接收对象…

匹配算法 python

1. 基于特征的匹配算法 1.1 SIFT(Scale-Invariant Feature Transform) SIFT 是一种在尺度和旋转上不变的特征点检测算法,常用于图像匹配。 步骤: 关键点检测:检测图像中的关键点,利用高斯差分&#xff…

智能合约中断言失败

断言失败: 断言(assert)在智能合约中用于确保内部逻辑的一致性和正确性,但如果使用不当,确实可能导致意外的合约终止或资金锁定。这是因为assert主要用于检测程序内部的错误,例如算法错误或逻辑错误&#…

k8s小型实验模拟

(1)Kubernetes 区域可采用 Kubeadm 方式进行安装。(5分) (2)要求在 Kubernetes 环境中,通过yaml文件的方式,创建2个Nginx Pod分别放置在两个不同的节点上,Pod使用hostPat…

邬家桥公园

文|随意的风 原文地址 我游览过现存规模最大、保存最完整的皇家园林颐和园,瞻仰过拥有世界上最大祭天建筑群的天坛公园,那都是多年前的事情了。 邬家桥公园相比颐和园、天坛公园,气势雄伟倒谈不上。它没有西湖的水平如镜&#xff…

Java | Leetcode Java题解之第139题单词拆分

题目&#xff1a; 题解&#xff1a; public class Solution {public boolean wordBreak(String s, List<String> wordDict) {Set<String> wordDictSet new HashSet(wordDict);boolean[] dp new boolean[s.length() 1];dp[0] true;for (int i 1; i < s.len…

TCP和UDP通信中如何处理并发冲突

在处理TCP和UDP通信中的并发冲突时&#xff0c;我们可以采取多种策略来确保数据的准确传输和系统的稳定性。以下是对TCP和UDP在并发冲突处理方面的详细分析&#xff1a; TCP通信中的并发处理 TCP是一种面向连接的传输层协议&#xff0c;它通过建立可靠的连接来保证数据的完整…

JimuReport 积木报表 v1.7.52 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

智能变电站网络报文记录及故障录波分析装置

是基于Intel X86、PowerPC、FPGA等技术的高度集成化的硬件平台&#xff0c;采用了高性能CPU无风扇散热、网络数据采集、高速数据压缩存储加密等多种技术&#xff0c;实现了高性能计算、多端口同步高速数据采集、数据实时分析、大容量数据存储等功能。 ● 在满足工业标准的同时&…

数据结构 -- 树状数组

前言 树状数组或二叉索引树&#xff08;Binary Indexed Tree&#xff09;&#xff0c;又以其发明者命名为 Fenwick 树。其初衷是解决数据压缩里的累积频率的计算问题&#xff0c;现多用于高效计算数列的前缀和、区间和。它可以以 O(logn) 的时间得到任意前缀和。并同时支持在 …

Kali Linux 2024.2 释出

渗透测试发行版 Kali Linux 释出了最新的 2024.2。 主要新特性包括&#xff1a;桌面环境更新到 GNOME 46&#xff0c;Xfce 环境加入 HiDPI 模式&#xff0c;更新了网络侦察工具 AutoRecon&#xff0c;监视 Linux 进程的命令行工具 pspy&#xff0c;提取和显示 CVE 信息的 Splo…

项目验收总体计划书(实际项目验收原件参考Word)

测试目标&#xff1a;确保项目的需求分析说明书中的所有功能需求都已实现&#xff0c;且能正常运行&#xff1b;确保项目的业务流程符合用户和产品设计要求&#xff1b;确保项目的界面美观、风格一致、易学习、易操作、易理解。 软件全套文档过去进主页。 一、 前言 &#xff0…

WHAT - 富文本编辑器系列(二)- 表情包面板

目录 一、背景二、实践1. 安装 Tiptap2. 创建表情包面板组件3. 在 Tiptap 编辑器中集成表情包面板4. 样式调整5. 完整示例代码 三、自定义格式编码的表情1. 数据压缩和传输效率2. 兼容性和一致性3. 安全性和防篡改4. 特定功能需求5. 集成现有系统6. 示例 一、背景 在一个富文本…

day38 ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 …

Unity 编辑器扩展,获取目录下所有的预制件

先看演示效果 实现方案 1创建几个用于测试的cube 2&#xff0c;创建一个Editor脚本 3&#xff0c;编写脚本内容 附上源码 using UnityEditor; using UnityEngine;public class GetPrefeb : EditorWindow {private string folderPath "Assets/Resources"; // 指定预…

[FSCTF 2023]Tea_apk

得到密文和密钥 import base64 from ctypes import c_uint32import libnumDELTA 0x9E3779B9def decrypt(v, n, k):rounds 6 int(52 / n)sum c_uint32(rounds * DELTA)y v[0].valuewhile rounds > 0:e (sum.value >> 2) & 3p n - 1while p > 0:z v[p …

matlab仿真教程要点和难点以及实际应用

Matlab仿真基础教程 1. 确定问题和目标 概述:明确你要解决的问题和仿真的目标。 参考:无直接参考数字,但这是仿真流程的第一步(参考文章3)。 2. 建立数学模型 概述:根据问题和目标,建立相应的数学模型。 参考:无直接参考数字,但数学模型是仿真的基础(参考文章3)…