【Maven】依赖管理,Maven仓库,Maven核心功能
Maven 是一个项目管理工具,基于 POM(Project Object Model,项目对象模型)的概念,Maven 可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件
大白话:Maven 是一个项目管理工具,通过 pom.xml 文件的配置获取 jar 包,而不用手动去添加 jar 包
- 项目开发:编译、打包(jar 包)、运行。

- 当
什么是 Maven
Maven 是一个项目管理工具,基于 POM(Project Object Model,项目对象模型)的概念,Maven 可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件
大白话:Maven 是一个项目管理工具,通过 pom. xml 文件的配置获取 jar 包,而不用手动去添加 jar 包
- Maven 简单,高效,可以提高我们的开发效率,减少我们的开发 bug。
- Maven 提供的功能非常多,在这主要体现两方面:
- 项目构建
- 管理依赖
创建一个 Maven 项目
IDEA 本身已经继承了 Maven,我们可以直接使用,无需安装
以下截图的
IDEA版本为:2024.1.2,不同版本的IDEA界面展示会有不同

- 点击
create,就创建好了一个Maven项目

Maven 核心功能
接下来我们结合项目,介绍 Maven 在项目开发中的作用
- 项目构建
- 管理依赖
项目构建
Maven 提供了标准的,跨平台(Linux、Windows、MacOS 等)的自动化项目构建方式
当我们开发了一个项目之后,代码需要经过编译、测试、打包、发布等流程。每次代码的修改,都需要经过这些流程,如果代码反复调试修改,这个流程就需要反复进行,就显得麻烦。而 Maven 给我们提供了一套简单的命令阿里完成项目的构建

- 比如点击“
package”,就可以完成项目的打包操作

打包就是把所有的 class 文件,全部放在一起,打成 jar 包或者 war 包
jar和war包是一种压缩文件jar包就是把开发人员已经写好的一些代码进行打包。打包好的jar包就可以进入到其他项目中,也可以直接使用这些jar包中的类和属性- 另外,也可以打成可执行
jar包,这样的包就可以通过java -jar命令来执行war包可以理解为是一个web项目,里面是项目的所有东西,通常用于网站
依赖管理
上面说到,Maven 是一个项目管理工具,通过 pom.xml 文件的配置获取 jar 包,而不用手动去添加 jar 包获取的 jar 包,其实就是依赖
pom.xml就是Maven的配置文件,用以描述项目的各种信息
依赖配置
依赖:指当前项目运行时所需要的 jar 包
比如 JDBC,我们需要手动下载 mysql-connector-java 的包,并且添加到项目中
如果使用 Maven,我们只需要在 pomxml 中引入 mysql-connector-java 的依赖就可以了
<dependencies> <!--里面放置项目的依赖坐标,可以为多个-->
</dependencies>
- 在
pom文件<dependencies>标签内,添加依赖坐标
<dependencies> <groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version>
</dependencies>
-
点击刷新按钮,引入新加的依赖 jar 包
- 后续有添加新的 jar 包,或者修改 jar 包的版本,都需要通过该方式在项目中添加依赖

- 后续有添加新的 jar 包,或者修改 jar 包的版本,都需要通过该方式在项目中添加依赖
-
刷新完之后,就可以在项目中看到新加入的 jar 包
依赖传递
早期我们没有使用 Maven 时,向项目中添加依赖的 jar 包,需要把所有的 jar 包都复制到项目工程下。
比如,A 依赖 B,B 依赖 C,那么 A 项目引入 B 的同时,也需要引入 C,如果我们手动管理这个依赖,这个过程就会比较麻烦,我们需要知道每个库都依赖哪些库,以及这些依赖之间的版本是如何关联的
- 比如我们要吃火锅,需要有锅、调料、食材,以及确定什么样的锅,什么样的食材
- 比如去医院看病,需要带上以往的病例,检查结果、处方等,并且要确定带的资料是正确的。如果日期错了,或者患者错了,带少了,就需要回去重新拿
但如果是使用 Maven 的话,就可以避免管理所需依赖的关系。我们只需要在 pom 文件中,定义直接依赖就可以了。由于 Maven 的依赖具有传递性,所以会自动把所依赖的其他 jar 包也一起导入
- 比如吃火锅,现在我们点一个海底捞外卖,直接就把所有食材都送过来了,包括什么锅、什么食材
- 比如去医院看病,借助“互联网”,实现了信息互享,只需要带上身份证,以往的病历和检查结果就都可以看到了
Maven 会把在引入一个依赖的时候,会一起把实现这个功能所需要的依赖也一起自动引入
这里引入 mysql,进行打包,protobuf 就是连带的依赖,需要一起引入
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> </dependency>
</dependencies>

依赖排除

项目 A ,依赖一个项目 B 和一个 jar 包 A
jar包A依赖jar包B、jar包C- 项目
B里面是各种依赖,其中也用到了jar包C
但是两边都需要引入 jar 包 C,此时我们在哪边进行引入?
一般 jar 包都是向下兼容,高版本可以兼容低版本
最短路径法:
看项目 A 到两个 jar 包 C 放入路径,哪个更短就用哪个
- 左边的是三步
- 右边的是两步
所以就在右边引入jar包
而右边的 jar 包 C 版本比左边的低,无法兼容左边的高版本 jar 包 C。此时就需要将右边的 jar 包 C 从 1.0 升级成 2.0,此时就可以进行指定依赖
- 首先将
1.0的jar包C给排除掉 - 此时项目中就只剩下
2.0的jar包C了,我们在根据路径找jar包C的时候,就只能找到2.0的jar包C了
虽然在上面的图片中看起来是有结构的,谁依赖谁。但是放在项目中,都是平铺直叙的,都是放在一起用的
依赖排除
enclusions 就是排除一些依赖,不会默认把相关的所有依赖都进行引入
上面引入依赖的时候,主依赖和相关依赖都是从网上下载的。需要排除一些依赖,就将网上的地址给出来
Maven Help
当项⽬⽐较复杂时,我们就会有 Jar 包冲突的问题,这时候就需要去解决依赖冲突。解决冲突之前,需要先找到冲突,我们可以使⽤ Maven Help 插件来观察包和包之间的依赖关系
- 如果需要排除某个依赖,就右键点击,选择
Exclude
依赖的坐标
这个代码,我们称之为“坐标”,也就是唯一的
在 Maven 中,根据 groupId、artfactId、version 的配置,来唯一识别一个 jar 包,缺一不可。当我们在 pom 文件中配置完依赖之后,点击刷新, Maven 就会根据坐标的位置,去仓库里寻找 jar 包,并把它下载下来,添加到项目中,这个 jar 包下载的地方就叫仓库
仓库:用来存储资源,管理各种 jar 包
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version>
</dependency>
Maven 仓库
Maven 仓库分为两种:
-
本地仓库
仓库在你本机电脑上,是本地仓库。其他都是远程仓库 -
远程仓库
远程仓库
中央仓库
全球唯一,地址为:
https://repo1.maven.org/maven2/springframework/
里面东西太多了,不好找。可以在这里面进行快速查找:
https://mvnrepository.com
- 私有服务器
- 其他公共的
Maven 版本选择哪个?
- 没漏洞的
- 选择次新版本
- 选择人多的
不严格,推荐是基于大家不知道用哪个的情况,对这个 jar 包不熟的情况
jar 包下载路径
- 先去本地仓库查找,如果没有,就去中央仓库查
- 如果中央仓库没有,就下载失败,报错
- 如果中央仓库有,jar 包就从中央仓库下载到本地仓库
- 项目从本地仓库中获取


本地仓库原来是空的,随着使用,里面的包越来越多(从中央仓库下载过来的)
私有服务器
中央仓库里面的包是全世界的都可以看到,而有一些不想公开的 jar 包就放在私服中(私有服务器)
- 有账号和密码,公司里面可以用

- 有权限的人,一起使用的
- 如果遇到私服中不存在的 jar 包,第一个人下载之后,后面的人就从私服中可以获取到了,无需再下载了
其他公共服务器
- 阿里云
- 华为云
因为中央仓库在国外,所以下载起来会⽐较慢,所以咱们选择借助国内⼀些公开的远程仓库来下载资源
阿里云就相当于是把中央仓库弄了一个镜像,放在了国内,并公开给人用
如果路径中有中文,修改一下 Maven 本地仓库路径
相关文章:
【Maven】依赖管理,Maven仓库,Maven核心功能
Maven 是一个项目管理工具,基于 POM(Project Object Model,项目对象模型)的概念,Maven 可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件 大白话:Maven 是一个项目管理工…...
Android wifi信号和漫游信号设置
1.wifi信号 /packages/modules/Wifi/framework/java/android/net/wifi/WifiManager.java Deprecated public static int calculateSignalLevel(int rssi, int numLevels) { if (rssi < MIN_RSSI) { //*/update wifi signal return 1;…...
检查cuda和显卡的可用性
检查cuda和显卡的可用性 import torch device_gpu torch.device(cuda if torch.cuda.is_available() else cpu) print(device_gpu) print(torch.cuda.is_available())...
Kotlin:2.0.20 的新特性
一、概述 Kotlin 2.0.20英文版官方文档 Kotlin 2.0.20发布了!这个版本包括对Kotlin 2.0.0的性能改进和bug修复,我们在其中宣布Kotlin K2编译器为Stable。以下是本次发布的一些亮点: 数据类复制函数将具有与构造函数相同的可见性来自默认目标层次结构的源集的静态访…...
Python内存管理与泄漏排查实战
Python内存管理与泄漏排查实战 Python作为一种高级编程语言,因其易读性和丰富的标准库而备受开发者青睐。然而,随着项目的复杂度增加,内存管理问题可能会影响程序的性能,甚至导致内存泄漏。为了构建健壮且高效的应用程序…...
828华为云征文|华为云Flexus云服务器X实例搭建部署H5美妆护肤分销商城、前端uniapp
准备国庆之际,客户要搭个 H5 商城系统,这系统好不容易开发好啦,就差选个合适的服务器上线。那可真是挑花了眼,不知道哪款性价比高呀!就像在琳琅满目的选择前。最终慧眼识珠,选择了华为云 Flexus X。至于为什…...
初学51单片机之I2C总线与E2PROM二
总结下上篇博文的结论: 1:ACK信号在SCL为高电平期间会一直保持。 2:在字节数据传输过程中如果发送电平跳变,那么电平信号就会变成重复起始或者结束的信号。(上篇博文的测试方法还是不能够明确证明这个结论࿰…...
Kafka学习笔记(一)Kafka基准测试、幂等性和事务、Java编程操作Kafka
文章目录 前言4 Kafka基准测试4.1 基于1个分区1个副本的基准测试4.2 基于3个分区1个副本的基准测试4.3 基于1个分区3个副本的基准测试 5 Java编程操作Kafka5.1 引入依赖5.2 向Kafka发送消息5.3 从Kafka消费消息5.4 异步使用带有回调函数的生产消息 6 幂等性6.1 幂等性介绍6.2 K…...
结合vueuse实现图片懒加载
介绍 为什么要有懒加载? 在一个网页中如果有很多张图片,那么用户初进这个页面的时候不必一次性把所有图片都加载出来,否则容易造成卡顿和浪费。应该是,用户的视图页面滑到该图片的位置,然后再把该图片加载出来。 前置…...
Mysql数据库--聚合查询、分组查询、联合查询(不同的连接方式)
文章目录 1.查询的进阶版1.1查询搭配插入进行使用1.2聚合查询1.3group by分组查询1.4联合查询之笛卡尔积1.5左外连接,右外连接介绍join on1.6自连表 1.查询的进阶版 1.1查询搭配插入进行使用 我们首先创建两张表,一个叫做student,一个叫做student2,两个…...
计算机视觉——图像修复综述篇
目录 1. Deterministic Image Inpainting 判别器图像修复 1.1. sigle-shot framework (1) Generators (2) training objects / Loss Functions 1.2. two-stage framework 2. Stochastic Image Inpainting 随机图像修复 2.1. VAE-based methods 2.2. GAN-based methods …...
集中式架构和分布式架构
数据是企业的核心资产和战略资源。面对爆炸性的数据增长,如何有效地组织、管理和利用数据成为企业的重大挑战。数据架构作为企业数据管理的蓝图和框架,发挥重要作用。本文就来详细说下当下主流的两种数据架构的类型。 首先明确数据架构定义:…...
Redis: 集群高可用之故障转移和集群迁移
故障转移 故障转移,包括自动故障转移和手动故障转移 1 )自动故障转移 Redis 集群,主节点挂了,从节点可以顶上来继续提供服务常用制造故障的两种方式 第一,对其中一个节点进行 SHUTDOWN 操作第二,kill 掉…...
记账软件在线、会计记账网站、财务记账官网、记账云、云记账、在线免费做账以及易舟云财务软件
记账软件在线、会计记账网站、财务记账官网、记账云、云记账、在线免费做账以及易舟云财务软件,以下是一些详细的介绍和推荐: 一、记账软件在线与会计记账网站 记账软件和会计记账网站是现代财务管理中不可或缺的工具,它们能够帮助企业或个人…...
Elasticsearch基础_3.基础操作
文章目录 一、索引操作1.1、创建索引1.2、删除索引 二、映射操作2.1、查看映射2.2、扩展映射 三、文档操作3.1、单条写入文档3.2、更新单条文档3.3、查看单条文档3.4、删除单条文档3.5、根据条件删除文档 一、索引操作 1.1、创建索引 PUT /${index_name} {"settings&quo…...
PHP永久性Cookie的含义
PHP中的永久性Cookie(也称为持久性Cookie)是指在用户的计算机上存储的一种持久性的HTTP Cookie。与常规的临时Cookie不同,永久性Cookie在浏览器关闭后依然保留,并且可以在用户下次访问该网站时被读取和使用。 主要特点 持久存储…...
瑜伽培训行业为何要搭建自己的专属知识付费小程序平台?集师知识付费系统 集师知识付费小程序 集师知识服务系统 集师线上培训系统
在当今快节奏的生活中,瑜伽作为一种舒缓压力、增强体质的生活方式,受到了越来越多人的青睐。瑜伽培训行业也随之蓬勃发展,但如何在激烈的市场竞争中脱颖而出,成为众多瑜伽培训机构面临的一大挑战。搭建自己的专属知识付费小程序平…...
FFT 分析进阶-笔记
FFT 分析进阶 边界不连续与泄漏效应解决方法增加窗函数海宁窗与哈布什窗混叠效应频率高到什么程度会出现混叠现象呢?那我们有办法去应对这个混叠吗?经典平均指数平均关于结果的显示模式FFT计算的三个常见的范例计算FFT图谱中某一段的总值,图中…...
毕业设计_基于springboot+layui+mybatisPlus的中小型仓库物流管理系统源码+SQL+教程+可运行】41004
毕业设计_基于springbootlayuimybatisPlus的中小型仓库物流管理系统源码SQL教程可运行】41004 下载地址: https://download.csdn.net/download/qq_24428851/89843203 技术栈 后端:springboot、mybatis-plus、shiro 前端:layUI 存储&…...
ROS基础入门——实操教程
ROS基础入门——实操教程 前言 本教程实操为主,少说书。可供参考的文档中详细的记录了ROS的实操和理论,只是过于详细繁杂了,看得脑壳疼,于是做了这个笔记。 Ruby Rose,放在这里相当合理 本文初编辑于2024年10月4日 C…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
