【Spring】1. Maven项目管理

📚博客主页:爱敲代码的小杨.
✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》
❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️
🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!
小杨近些在学习人工智能方面的知识,发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

文章目录
- 1. 什么是 Maven
- 2. 创建 Maven 项目
- 3. Maven 的作用
- 3.1 统一项目结构
- 3.2 项目构建
- 3.3 依赖管理
- 依赖配置
- 依赖传递
- 依赖排除
- 4. Maven 仓库
- 4.1 本地仓库
- 4.2 中央仓库
- 查找 jar 包的地址
- 4.3 私有服务器,也称私服
- 4.4 Maven 设置国内源
1. 什么是 Maven
官方描述:
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
翻译:Apache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从一个中心信息片段管理项目的构建、报告和文档
Maven 是⼀个项目管理工具, 通过 pom.xml文件的配置获取 jar包,而不用手动去添加 jar包。
前面学习 JDBC 的时候,就需要手动的去添加
jar包,学习了 Maven 就不用去手动添加jar包了,只需要添加几行代码就可以添加jar包了。
🚩:为什么要学习 Maven?
简单, 方便, 提高我们的开发效率, 减少我们的开发Bug.
2. 创建 Maven 项目
IDEA 本身已经集成了 Maven , 我们可以直接是用, 无需安装
File->New->Project

- 填写项目名、存放位置、创建方式选择 Maven、选择JDK版本

- 点击
Create,就创建好了 Maven 项目

3. Maven 的作用
3.1 统一项目结构
统一项目结构:提供标准、统一的项目结构
任何编译器创建 Maven 项目,其项目的结构都是一样的

3.2 项目构建
Maven 提供了标准的,跨平台(Linux, Windows, MacOS等)的自动化项目构建方式
当我们开发了⼀个项目之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过这些流程, 如果代码反复调试修改, 这个流程就需要反复进行, 就显得特别麻烦, 而 Maven 给我们提供了⼀套简单的命令来完成项目的构建

比如:是用package命令就可以对项目进行打包操作

打包就是把所有的 class文件, 全部放在一起, 打成 jar 包或者 war包
jar包和war包都是⼀种压缩文件
jar包就是把开发人员已经写好的⼀些代码进行打包. 打好的jar包就可以引入到其他项目中, 也可以直接是用这些jar包中的类和属性. 另外也可以打成可执行jar包, 这样的包就可以通过java -jar命令来执行war包可以理解为是⼀个web项目,里面是项目的所有东西, 通常用于网站.
3.3 依赖管理
依赖管理:方便快捷的管理项目的依赖的资源(jar包),避免版本冲突的问题
pom.xml就是 Maven 的配置文件,用来描述项目的各种信息
依赖配置
依赖:只当前项目运行的所需要的 jar包
比如:学习 JDBC 的时候,我们需要手动下载mysql-connector-java-5.1.47的包,并添加到项目中

如果是用 Maven, 我们只需要在pom.xml中引入mysql-connector-java的依赖就可以了
<dependencies><!--放置项目需要的依赖坐标,可以多个-->
</dependencies>
- 在
pom.xml文件中<dependencies>标签内,添加依赖坐标
<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency>
</dependencies>
- 点击刷新按钮, 引入新加入的依赖
jar包
后续有添加新的
jar包, 或者修改jar包版本, 都需要通过该方式在项目中添加依赖.

- 刷新完之后, 就可以在项目中看到新加入的
jar包

依赖传递
早期我们没有是用 maven时, 向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下.
比如 A 依赖 B, B依赖C, 那么 A项目引入 B 的同时, 也需要引入C, 如果我们手动管理这个依赖, 这个过程就会比较麻烦, 我们需要知道每个库都依赖哪些库, 以及这些依赖之间的版本是如何关联的?
但是用 maven 的话, 就可以避免管理所需依赖的关系。我们只需要在pom.xml文件中, 定义直接依赖就可以了, 由于 maven 的依赖具有传递性,所以会自动把所依赖的其他jar包也⼀起导入

如上图, 项目A 通过Maven 引入 Jar A 时, 会自动引入 Jar B 和 Jar C.
Jar A 和 项目B就是项目 A的直接依赖.
Jar B, Jar C是间接依赖.
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
依赖排除
- 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>6.0.6</version><!--排除依赖--><exclusions><exclusion><artifactId>spring-jcl</artifactId><groupId>org.springframework</groupId></exclusion></exclusions>
</dependency>
4. Maven 仓库
通过几行代码就可以把需要的 jar包放进项目中,是如何做到的呢?
<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency>
</dependencies>
这个代码, 我们称之为 “坐标”, 也就是唯一的.
在 Maven中,根据groupId、artifactId、version的配置,来唯一识别一个 jar包,缺一不可。
当我们在pom.xml文件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库里寻找 jar包, 并把他下载下来, 添加到项目中. 这个jar包下载的地方就称为仓库.
仓库:用于存储资源,管理各种jar包

Maven仓库的本质就是⼀个目录(文件夹),这个目录被用来存储开发中所有依赖(jar包, 插件等).

Maven仓库分为两大类: 本地仓库和远程仓库. 其中远程仓库又分为中央仓库, 私服 和其他公共库
4.1 本地仓库
本地仓库: 自己计算机上的一个目录(用来存储jar包)
当项目中引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包
- 如果有,则在项目直接引入
- 如果没有,则去中央仓库中下载对应的
jar包到本地仓库

idea配置 Maven
file->Settings->Maven

查看该仓库目录 可以看到该目录下有很多的jar(最开始是空的, 随着Maven的使用, 该仓库下文件会越来越多)

4.2 中央仓库
中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联网. 由 Maven 团队维护,全球唯一.
仓库地址:网址
可以通过https://mvnrepository.com 这个网址来查询并下载jar包
查找 jar 包的地址
- 访问 https://mvnrepository.com
- 进行查找,比如 mysql

- 选择添加的
jar包

- 查看
jar包坐标

4.3 私有服务器,也称私服
私服:一般由公司搭建的私有仓库。
私服属于某个公司,或者某个部门 往往需要⼀定权限.
有了私服之后, Maven依赖下载的顺序又发生了变化

当Maven需要下载资源的时候
- 先从本地仓库获取, 本地仓库存在, 则直接返回
- 如果本地仓库没有, 就从私服请求, 私服存在该资源, 就直接返回
- 如果私服上不存在该资源,则从中央仓库下载, 中央仓库不存在, 就报错了…
- 如果中央仓库中存在, 就先缓存在私服上之后,再缓存到本地仓库⾥, 再为Maven的下载请求提供服务
4.4 Maven 设置国内源
因为中央仓库在国外, 所以下载起来会⽐较慢, 所以咱们选择借助国内⼀些公开的远程仓库来下载资源
如何设置国内源
File->Settings

- 查看配置文件的地址, 如上图所示, Maven配置文件地址为:
C:\APP\Java\apache-maven-3.6.1\conf\settings.xml
不同电脑设置的Maven路径不同
settings和repository可以修改设置为其他路径, 两个路径不要有中⽂
- 配置国内源
Maven 仓库默认是在国外官网, 国内使用时会比较慢,我们可以更换为阿里云的仓库
打开settings.xml, 在 mirrors 节点上,添加内容如下:
<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿⾥云公共仓库</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

相关文章:
【Spring】1. Maven项目管理
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…...
工业制造领涉及的8大常见管理系统,如mes、scada、aps、wms等
在工业生产和制造领域有一些常见的管理系统,很多小伙伴分不清,这次大美B端工场带领大家了解清楚。 MES(Manufacturing Execution System,制造执行系统): MES是一种用于监控、控制和优化生产过程的软件系统…...
Lianwei 安全周报|2024.06.17
新的一周又开始了,以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 IDC:2024 第一季度中国安全硬件市场规模…...
海量数据处理利器 Roaring BitMap 原理介绍
作者:来自 vivo 互联网服务器团队- Zheng Rui 本文结合个人理解梳理了BitMap及Roaring BitMap的原理及使用,分别主要介绍了Roaring BitMap的存储方式及三种container类型及Java中Roaring BitMap相关API使用。 一、引言 在进行大数据开发时,…...
Javaweb登录校验
登录校验 JWT令牌的相关操作需要添加相关依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>一、摘要 场景:当我们想要访问一个网站时&am…...
vxe-table 列表过滤踩坑_vxe-table筛选
但是这个过滤输入值必须是跟列表的值必须一致才能查到,没做到模糊查询的功能,根据关键字来过滤并没有实现。 下面提供一下具体实现方法:(关键字来过滤) filterNameMethod({ option, row }) {if (row.name.indexOf(op…...
计算机网络:网络层 - IP数据报的转发
计算机网络:网络层 - IP数据报的转发 基于终点转发最长前缀匹配二叉线索树路由表特殊路由特定主机路由默认路由 IP多播 基于终点转发 路由器转发报文时,是通过报文中的目的地址字段来转发的,也即是说路由器只知道终点的IP地址,根…...
颠覆与创新:探寻Facebook未来的发展路径
Facebook,这个曾经引领社交网络革命的巨头,在如今竞争激烈的科技市场中,正面临着前所未有的挑战和机遇。如何在不断变化的数字世界中保持竞争力,成为业界领先者,这是摆在Facebook面前的重要课题。本文将探寻Facebook未…...
太湖远大毛利率下滑:研发费用率远低同行,募投项目合理性疑点重重
《港湾商业观察》黄懿 6月20日,浙江太湖远大新材料股份有限公司(以下简称“太湖远大”,873743.NQ)即将迎来过会。 2023年11月30日,太湖远大所提交的上市申请材料正式获北交所受理,保荐机构为招商证券&…...
赶紧收藏!2024 年最常见 20道设计模式面试题(八)
上一篇地址:赶紧收藏!2024 年最常见 20道设计模式面试题(七)-CSDN博客 十五、模板方法模式是如何在父类中定义算法框架的? 模板方法模式通过在父类(通常是一个抽象类)中定义算法的骨架&#x…...
JAVA学习-练习试用Java实现“比较版本号”
问题: 给定两个版本号 version1 和 version2 ,请比较它们。 版本号由一个或多个修订号组成,各修订号由一个 . 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,…...
云原生分级SLA
云原生分级SLA(Service Level Agreement,服务等级协议)规则是为了确保云服务提供商和客户之间对服务性能、可用性和其他关键指标有明确的理解和期望。这些规则通常基于业务需求和技术实现来制定,并根据服务的不同级别进行分级。以…...
java干货 线程间通信
文章目录 一、线程间通信1.1 为什么要处理线程间通信?1.2 什么是等待唤醒机制? 二、等待唤醒机制使用2.1 等待唤醒机制用到的方法2.1.1 wait2.1.2 notify 2.2 线程通信代码实践2.2.1 重要说明2.2.2 代码 一、线程间通信 1.1 为什么要处理线程间通信&…...
【人机交互 复习】第6章 交互式系统的设计
一、设计框架 1.在建立了一组需求之后,设计即将开始,建议采取自上面下的方式,首先把重点放在大的方面,生成低保真且不包含具体细节的方案,一般通过写剧本来确定交互设计模式与逻辑。 2.设计框架: 先站在一个…...
1-函数极限与连续
1 2 平方项没有考虑到(其正负)...
【C++题解】1670 - 象棋大赛
问题:1670 - 象棋大赛 类型:分支问题 题目描述: 市里要组织象棋大赛,年龄在 8∼30 周岁之间的选手可以报名参赛。为了公平起见,大赛组委会将选手们分了青年组、少年组和儿童组,大赛组委会规定:…...
Samba:用于高效无限上下文语言建模的简单混合状态空间模型
Samba: Simple Hybrid State Space Models for Efficient Unlimited Context Language Modeling 📜 文献卡 Samba: Simple Hybrid State Space Models for Efficient Unlimited Context Language Modeling作者: Liliang Ren; Yang Liu; Yadong Lu; Yelong Shen; …...
通俗易懂的ChatGPT原理简介
一、引言 随着人工智能的发展,聊天机器人已经成为我们生活中的常见工具。而在众多聊天机器人中,ChatGPT 无疑是最受关注的一个。ChatGPT 是由 OpenAI 开发的一种基于生成式预训练模型(GPT)的大型语言模型。本文将通俗易懂地介绍 …...
你认为 AI 作图程序「MidJourney」有哪些比较好用的关键词?
玩了一段时间的MidJourney,打算把这个回答做成资源帖。也欢迎在评论区补充讨论。 MidJourney的极简指南 快速上手 装discord,或者直接打开网址 https://discord.gg/midjourney 注册用户。进入Midjourney的官方服务器后,在左侧栏找一个newb…...
9.2JavaEE——JDBCTemplate的常用方法(一)excute()方法
execute()方法用于执行SQL语句,其语法格式如下: jdTemplate.execute("SQL 语句");下面以创建数据表的SQL语句为例,来演示excute()方法的使用,具体步骤如下。 1、创建数据库 在MySQL中,创建一个名为spring的…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

