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

JavaWeb——Maven(1/8):整体介绍(什么是Maven、Maven的作用、小结)

目录

什么是Maven

Maven的作用

依赖管理

统一项目结构

项目构建

小结


Web前端开发的知识了解完毕后,接下来要进入后端Web开发的学习,这一部分的内容是学习的重点。在这一部分内容中,首先要了解 Java 项目的构建工具 Maven。

首先先来介绍一下什么是 Maven。

什么是Maven

  • Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。

是一款管理和构建 Java 项目的工具。这是 Maven 的 logo,

这里提到了一个组织,Apache

Apache软件基金会,成立于1999年7月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织。
开源项目:Welcome to The Apache Software Foundation!

所谓开源指的是源代码是开放的,谁都可以看到这个项目的源代码,而且它还是免费的。Apache 旗下的开源项目可以通过访问特定网址看到所有项目,Maven 只是其中的一个开源项目。

Maven的作用

作为一名 Java 开发工程师,在工作当中还会遇到很多 Apache 旗下的项目。

Maven 是一款管理和构建 Java 项目的工具,它的作用主要体现在三个方面:一是依赖管理;二是统一的项目结构;三是标准化的项目构建流程。

依赖管理

先来介绍第一个方面依赖管理。通过 Maven 这个工具,可以很方便快捷地管理项目当中的依赖资源,主要指的是 jar 包。

依赖管理

  • 方便快捷地管理项目依赖的资源(jar包),避免版本冲突问题。

通过这款工具,还可以避免依赖 Java 包的冲突问题。如果通过传统的手动导入包的方式来开发一个大型项目,会非常繁琐。

比如在项目中要使用 Logback 来记录日志,首先得上网去找 Logback 相关的 Java 包,把这些包下载下来,复制到项目当中,然后在项目当中才可以使用 Logback 相关的功能来记录日志。

如果采用传统的手动导入包的方式,将会变得非常繁琐,因为首先得上网搜索这些包,一个一个下载下来,还得注意包之间的版本配套情况,然后再将这些包一个一个导入到项目当中。

如果在后期要对某一个包的版本进行升级,不仅要升级这个版本,相关依赖的版本都需要升级,这就非常繁琐。

有了 Maven 这款项目构建工具以后,我们不用再手动导入包了,只需要在配置文件当中简单描述一下我们所需要的依赖信息,Maven 就会自动联网下载,然后在项目当中就可以直接使用了。

如果要升级这个依赖的版本,也只需要修改一下这个文件,把版本号改了,刷新一下,此时这个版本会自动切换,并且相关的依赖版本全部会切换过来。

这是 Maven 的第一个作用依赖管理。

统一项目结构

接下来介绍第二个作用,统一的项目结构。

Java 项目的开发工具非常多,比如像早期的 Eclipse 以及当前最流行的 IntelliJ IDEA,它们所构建出来的 Java 项目是有差异的,所创建的 Java 工程不能直接导入到另一个开发工具当中。

这个问题将会得到完美的解决,Maven 给我们提供了一套标准的项目结构。不管你用的是哪款开发工具,只要使用 Maven 这款项目构建工具生成出来的目录结构,在其他的开发工具当中都可以将这个 Maven 工程直接导入进来,所有的开发工具都是通用的。

在 Maven 创建出来的这个工程当中,src 下有两个子目录,一个是 main,下面存放的是项目的实际资源;另一个是 test,下面存放的是项目的测试资源。而 main 以及 test 的下面就是 Java 的源代码。而 resources 下面存放的是配置文件等资源。

下面还有一份比较核心的配置文件叫 pom.xml,这个是 Maven 工程的核心,当前工程所需要导入的依赖的信息都需要在这份核心配置文件当中来配置。

这是 Maven 的统一的项目结构。

项目构建

接下来再介绍最后一个作用,标准化的项目构建流程。

在 Maven 当中提供了一套跨平台标准的项目构建方式。

具体来说,我们所开发的 Java 项目要运行,需要先通过 Java 编译器进行编译。如果没有像 IntelliJ IDEA 这样的高级开发工具,就需要先进行编译,编译完毕之后再来进行测试,测试我们的程序是否能够正常运行。

测试完毕之后就可以将项目进行打包,然后再对外发布这个项目。这是每一个项目当中都需要做的事情,但是在做一些大型项目的时候,这一系列的操作会非常繁琐。

Maven 将这一系列的操作制作了一套标准的构建流程,我们可以直接基于它提供的一些命令中的指令,快速地来完成项目的编译、测试、打包、发布等操作。

我们可以到 IDEA 简单演示一下,这里有一个命令窗口,假如我们要对项目进行编译,我们只需要点击右侧的命令面板,然后在这里找到里面的一条指令,

这个项目就会自动的进行编译,并且将编译后的文件放在了一个目录(target)下。target 下存放的就是编译之后的文件。

如果你要对当前项目进行打包,只需要双击一下特定指令,

那么此时 Maven 会自动的对项目进行打包,并且将打好的包也放在 target 这个目录下。而且像 compile、package 这些 Maven 当中的一些指令,在 Windows 系统上是支持的,同样在 Linux 系统、Mac 系统上都是支持的,所以它还是跨平台的。

这是 Maven 的三个作用。

小结

用一句话来总结 Maven,Maven 就是一款 Java 项目的工具

既然它是一款工具,我们在学习 Maven 的时候,主要学习的就是这款工具的使用、Maven 当中的一些概念以及这款工具的安装、怎么样集成 Maven,最核心的一块功能就是 Maven 的使用。


END


学习自:黑马程序员——JavaWeb课程

相关文章:

JavaWeb——Maven(1/8):整体介绍(什么是Maven、Maven的作用、小结)

目录 什么是Maven Maven的作用 依赖管理 统一项目结构 项目构建 小结 Web前端开发的知识了解完毕后,接下来要进入后端Web开发的学习,这一部分的内容是学习的重点。在这一部分内容中,首先要了解 Java 项目的构建工具 Maven。 首先先来介…...

Vivado 跟Xilinx SAE学HLS系列-高亚军(复合数据类型)

文章目录 目录 文章目录 Struct元素优化 枚举 ENUMERATED TYPE 希望能为你提供更多的创造力。 Struct元素优化 在对应的结构体变量--directive里面使用field_level或者struct_level进行优化. 4 4 4 4 4-------8 8 8 8 8 20-24; 查看波形--查看实际的分配情况 枚举 ENUMERATED …...

【mysql】WITH AS 语法详解

【mysql】WITH AS 语法详解 【一】WITH AS语法的基本结构【二】案例1【三】案例2 WITH AS 语法是MySQL中的一种临时结果集,它可以在SELECT、INSERT、UPDATE或DELETE语句中使用。通过使用WITH AS语句,可以将一个查询的结果存储在一个临时表中,…...

Rocky linux SSD安装

1. 下载ISO文件 Index of /vault/rocky/9.3/isos/x86_64/ 下载DVD iso 2.使用RUFUS制作启动盘,注意UEFI选项 Rufus - 轻松创建 USB 启动盘 3. 重启,F2进bios,选择U盘启动安装 4. 选择安装盘 5. 设置用户密码,用户名默认root 其他&#x…...

在 Linux 系统中设置 Service 服务开机自启的详细指南

目录 在 Linux 系统中设置 Service 服务开机自启的详细指南一、Linux 服务管理概述二、systemd 中设置服务开机自启2.1 systemd 介绍2.2 如何检查服务的状态2.3 启用服务开机自启2.4 手动启动和停止服务2.5 检查服务是否成功启用2.6 禁用开机自启服务 三、在 sysvinit 中设置服…...

Flythings学习(四)串口通信

文章目录 1 串口编程基本步骤1.1 打开串口1.2 配置串口 1.3 读串口1.4 发送串口1.5 关闭串口 2 综合使用3 如何在软件上保证串口稳定通信4 flythings中的串口通讯5 协议接收部分使用和修改方法6 通讯协议数据怎么和UI控件对接 1 串口编程基本步骤 串口通信有5个步骤 1.打开串口…...

[数据结构]带头双向循环链表的实现与应用

文章目录 一、引言二、链表的基本概念1、链表是什么2、链表与顺序表的区别3、带头双向循环链表 三、带头双向循环链表的实现1、结构体定义2、初始化3、销毁4、显示5、数据操作 四、分析带头双向循环链表1、存储方式2、优点3、缺点 五、总结1、练习题2、源代码 一、引言 链表作…...

商品详情数据API接口开发系列(属性规格详情图sku等)

商品详情数据API接口开发是一个复杂但至关重要的过程,它涉及多个方面,包括属性规格、详情图、SKU等关键信息的处理。以下是对该开发系列中这些关键要素的详细探讨: 一、商品详情数据API接口概述 商品详情数据API接口是指一种编程接口&#x…...

在 Ubuntu 上安装 clang-format-14

在 Ubuntu 上安装 clang-format-14 可以通过以下步骤完成: 1. 添加 LLVM 的官方 APT 仓库 首先,你需要添加 LLVM 的官方 APT 仓库,以便能够安装最新版本的 clang-format。 # 安装必要的依赖 sudo apt update sudo apt install -y wget gnu…...

【优选算法篇】双指针的华丽探戈:深入C++算法殿堂的优雅追寻

文章目录 C 双指针详解:进阶题解与思维分析前言第一章:有效三角形的个数1.1 有效三角形的个数示例 1:示例 2:解法一(暴力求解)解法二(排序 双指针)易错点提示代码解读 第二章&#…...

【springboot入门-mvc常用注解使用方式及原理】

常用注解 PathVariable:用于从URL路径中提取变量。RequestHeader:用于从HTTP请求头中获取数据。ModelAttribute:用于获取请求参数(包括URL参数和POST请求的表单数据),也可以用于将数据绑定到对象上。Reque…...

滚雪球学Redis[4.2讲]:Redis Sentinel 深度解析:工作原理、配置与高可用架构下的故障转移

全文目录: 🎉前言🚦4.2 Redis Sentinel🔄Sentinel的工作原理Sentinel的选举机制 ⚙️Sentinel的配置与使用示例:配置Redis SentinelSentinel自动故障转移过程示例 🧩高可用架构下的故障转移常见问题与优化实…...

Vue3 -- 设置分页,切换分页之后选项仍能保留 控制多个表格的选中不会互相影响

在 Vue 3 中实现分页功能,并确保在切换分页时选中的选项能够保留,同时控制多个表格之间的选中状态不互相影响,可以按照以下步骤进行: 1. 数据结构设计 为每个表格维护独立的选中项和分页状态。可以使用一个对象来存储每个表格的…...

如何在 JSON 中编写“anyOf”语句?

在 JSON 中,anyOf 语句通常用于 JSON Schema(JSON 模式)中,来定义多个可能的模式,表示数据可以匹配多个子模式中的任意一个。这种功能常用于验证 JSON 数据是否符合某一组可能的条件之一。 1、问题背景 问题&#xff…...

python开发环境配置

下载python安装包安装python配置环境变量调整类库下载位置 安装python 安装python是指安装python的基础编译环境及python运行所需的必须资源,类似于安装java的JDK python2与python3差异 进行python安装前,需要先了解python2和python3的差异&#xff0…...

QT开发--QT SQL模块

第十五章 QT SQL模块 15.1 QT SQL模块概览 Qt SQL模块是Qt框架中操作数据库的组件,提供易用API,支持SQLite、MySQL等多种数据库。它包含数据库驱动与连接功能。 15.1.1 QSqlDatabase 类 在Qt SQL模块中,数据库驱动基于QSqlDriver类&#xf…...

如何保证接口幂等性?

一、什么是接口幂等性? 幂等性是指:同一请求,执行很多次,最终结果都一样。 二、为什么会产生接口幂等性问题? 那么,什么情况下,会产生接口幂等性的问题呢? 网络波动, 可能会引起重…...

【9718】基于springboot+vue的生鲜交易系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 生鲜交易管理方面的任务繁琐,以至于交易市场每年都在生…...

Spring循环依赖解决方案

解决方案 使用提前暴露机制三级缓存进行解决 singletonObjects一级缓存,存放完整的 Bean。earlySingletonObjects二级缓存,存放提前暴露的Bean,Bean 是不完整的,未完成属性注入和执行 init 方法。singletonFactories三级缓存(用…...

解决 IntelliJ IDEA 运行时 “Command line is too long“ 问题

文章目录 文章标题:解决 IntelliJ IDEA 运行时 "Command line is too long" 问题简介问题描述解决方案代码示例代码示例1:使用JAR Manifest代码示例2:使用Classpath File代码示例3:优化项目依赖 结论进一步的资源 文章标…...

鸿蒙网络编程系列5-TCP连接超时分析

1. TCP连接超时简介 TCP是面向连接的协议,通过三次握手建立连接,但是,在建立连接的过程中对方有可能没有响应,这时候发起连接的一方会重试,如果重试多次仍然没有响应,就会触发超时,从而导致连接…...

金蝶云星空移动字段后关闭页面后重新打开无效

有同事反馈,单据的明细字段里面移动了字段,然后退出,其他字段都能按最后排版的位置显示,有个别字段始终无法按照排版的位置显示。 只需要打开BOS平台,找到对应字段,然后更改可见性。...

幂律分布笔记

一、幂律分布的数据拟合 数据分箱: 所谓分箱就是对原始数据进行分组,然后对每一组内的数据进行平滑处理。常见的分箱方式主要有等深分箱、等宽分箱、用户自定义等 对数分箱: 对原数据进行分箱,第i个箱的宽度为bi,b…...

一些NLP代表性模型

(一)BERT 由Bidirectional Encoder Representations from Transformers的首字母组成,是encoder-only结构类型的代表。 模型分预训练和微调两步,预训练任务有两类:masked language model(MLM)、next sentence predict…...

低代码移动端开发:未来的趋势与挑战

什么是低代码移动端开发? 低代码移动端开发平台允许开发者通过可视化界面和少量编码来构建应用程序。相较于传统的代码开发,低代码平台大大降低了技术和学习门槛,使非专业开发人员也能参与到移动应用的开发过程中。 低代码移动端开发的优势 …...

【Linux】嵌入式Linux系统的组成、u-boot编译

Linux—嵌入式Linux系统的组成、u-boot编译 前言一、嵌入式Linux系统的组成1.1 嵌入式Linux系统和PC完整的操作系统的对比如下:1.2 PC机—Windows系统启动流程(PC机—Linux系统、嵌入式ARM—linux系统的启动流程类似) 二、编译u-boot2.1 u-bo…...

Qt打开excel文件,并读取指定单元格数据

1. 下载并安装QXlsx库,详见之前的博文Qt子线程创建excel文件报错QObject: Cannot create children for a parent that is in a different thread.-CSDN博客 2. // 创建一个XlsxDocument对象QString filename "D:\\mydocuments\\data_acquisition\\data\\tes…...

适合下班回家做的小副业,用AI做视频,几天时间3000+

大家好,今天要给大家分享的项目是定制儿歌,精准定位宝妈群体,每天轻松赚500! ***01* 项目原理 父母都非常疼爱自己的孩子,愿意为孩子提供独特的东西。而我们正是利用这一点,通过免费AI工具生成专属的儿童…...

git的基本操作 + 分支管理

一、基本操作 1. 修改文件 Git比其他的版本管理器设计得更加优秀,因为Git追踪并管理的是修改,而非文件。 修改一个文件,不管你是添加一行,或者删除一行,还是添加了又删除了,甚至你创建了一个新文件&…...

VRRP

1、VRRP简介 虚拟路由冗余协议 VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时(单点故障&#xf…...