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、问题背景 问题ÿ…...
python开发环境配置
下载python安装包安装python配置环境变量调整类库下载位置 安装python 安装python是指安装python的基础编译环境及python运行所需的必须资源,类似于安装java的JDK python2与python3差异 进行python安装前,需要先了解python2和python3的差异࿰…...
QT开发--QT SQL模块
第十五章 QT SQL模块 15.1 QT SQL模块概览 Qt SQL模块是Qt框架中操作数据库的组件,提供易用API,支持SQLite、MySQL等多种数据库。它包含数据库驱动与连接功能。 15.1.1 QSqlDatabase 类 在Qt SQL模块中,数据库驱动基于QSqlDriver类…...
如何保证接口幂等性?
一、什么是接口幂等性? 幂等性是指:同一请求,执行很多次,最终结果都一样。 二、为什么会产生接口幂等性问题? 那么,什么情况下,会产生接口幂等性的问题呢? 网络波动, 可能会引起重…...
【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:优化项目依赖 结论进一步的资源 文章标…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
