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

三 maven的依赖管理

一 maven依赖管理

Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。

1.1 依赖管理和配置

我们通过定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动下载和管理依赖的繁琐工作和可能引发的版本冲突问题。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion>
<!-- 如何使用maven管理依赖1.在maven配置文件中即pom.xml文件中使用<dependencies>   #依赖的集合<dependency>    #一个依赖<groupId></groupId>     依赖的gav属性也说明了依赖是maven项目<artifactId></artifactId>  根据gav定位依赖<version></version></dependency></dependencies>2.如何寻找依赖的gav,有两种方法一是官网https://mvnrepository.com/repos/central 中搜索二是插件 maven-search 中搜索3. 补充依赖的生效范围通过<scope></scope>标签属性来规定compile(默认) main  test  打包test           test         如junitruntime        打包运行      如mysql驱动 用了反射provided       main  test    如servlet  因为tomcat中有servlet依赖--><groupId>com.ls</groupId><artifactId>maven-pom-dependenies-04</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><!--声明版本--><properties><!--命名随便,内部制定版本号即可 建议两层!在引用时使用${标签名}使用--><mysql.version>8.0.33</mysql.version></properties><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><scope>compile</scope></dependency></dependencies></project>

1.2依赖传递

依赖传递指的是当一个依赖 A 依赖于另一个依赖 B。当我们引入依赖A时,maven会自动的引入依赖A所需要的依赖B。减少了开发者手动引入多个依赖,解决了依赖版本的兼容性。

1.3依赖冲突

当直接引用或者间接引用出现了相同的依赖, 这时呢,一个项目就会出现相同的重复jar包,这就算作冲突!依赖冲突避免出现重复依赖,并且终止依赖传递!解决了引入重复依赖的问题

eg: A依赖B,B依赖C,C又依赖A,按照maven的依赖传递特性导入A依赖会导入B依赖,导入B依赖又会导入C依赖,导入C依赖又会导入A依赖(此时依赖冲突发生就停止再次导入A依赖)。

解决依赖冲突(如何选择重复依赖)方式:

  • 短路优先原则(第一原则)

    A—>B—>C—>D—>E—>X(version 0.0.1)

    A—>F—>X(version 0.0.2)

    则A依赖于X(version 0.0.2)。

  • 依赖路径长度相同情况下,则“先声明优先”(第二原则)

    A—>E—>X(version 0.0.1)

    A—>F—>X(version 0.0.2)

    在中,先声明的,路径相同,会优先选择!

二依赖导入失败问题

在使用 Maven 构建项目时,可能会发生依赖项下载错误的情况,主要原因有以下几种:

  1. 网络故障或者仓库服务器宕机,导致无法连接上maven仓库。
  2. 依赖信息错误,即依赖的GAV不正确。
  3. 本地仓库被污染。

对应的解决方案:

  1. 检查网络连接和 Maven 仓库服务器状态。
  2. 确保依赖项的版本号与项目对应的版本号匹配,并检查 POM 文件中的依赖项是否正确。
  3. 清除本地 Maven 仓库缓存(lastUpdated 文件),因为只要存在lastupdated缓存文件,刷新也不会重新下载。本地仓库中,根据依赖的gav属性依次向下查找文件夹,最终删除内部的文件,刷新重新下载即可!

对于本地仓库污染的问题原因是因为之前因为网络或其他原因,依赖下载了一部分但没下载完成就终止了。maven下载依赖的过程是,现在本地maven仓库中寻找,如果本地仓库中有就直接用,没有就要从中央仓库下载到本地maven仓库,由于本地maven仓库中有依赖的缓存,会导致maven以为本地仓库中已经存在,就不会再去中央仓库下载。

相关文章:

三 maven的依赖管理

一 maven依赖管理 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题&#xff0c;使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中&#xff0c;避免出现版本冲突和依赖缺失等…...

iperf3 网络性能测试

iperf3测试 1、iperf3简介 iperf3是一个主动测试网络带宽的工具&#xff0c;可以测试iTCP、UDP、SCTP等网络带宽&#xff1b;可以通过参数修改网络协议、缓冲区、测试时间、数据大小等&#xff0c;每个测试结果会得出吞吐量、带宽、重传数、丢包数等测试结果 2、参数详解 通…...

08 Php学习:if语句、Switch语句

PHP 条件语句 当您编写代码时&#xff0c;您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。 在 PHP 中&#xff0c;提供了下列条件语句&#xff1a; if 语句 - 在条件成立时执行代码 if…else 语句 - 在条件成立时执行一块代码&#xff0c;…...

二分查找的边界问题是怎么产生的?

总结&#xff1a;二分查找的目标有两个&#xff0c;一个是左区件的右边界&#xff0c;一个是右区间的左边界 如何去理解二分的过程&#xff1f; 如果要查找的是左区间的右边界&#xff1a; 可以将[l, r]理解一个集合&#xff0c;这个集合范围内的数都有可能是最后需要得到的…...

华为 2024 届校园招聘-硬件通⽤/单板开发——第十套

华为 2024 届校园招聘-硬件通⽤/单板开发——第十套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共十套&#xff09;获取&#xff08;WX:didadidadidida313&#xff0c;加我…...

五子棋:不会下五子棋也没关系,会用Java写五子棋就行

关注公号“微澜网络”获取完整源代码&#xff01; 效果展示&#xff1a; 目录 效果展示&#xff1a; 导语&#xff1a; 游戏介绍&#xff1a; 程序设计&#xff1a; 1.游戏规则和功能&#xff1a; 2.用户界面设计&#xff1a; 3.程序架构设计&#xff1a; 4.可扩展性和灵…...

【VUE】使用Vue和CSS动画创建滚动列表

使用Vue和CSS动画创建滚动列表 在这篇文章中&#xff0c;我们将探讨如何使用Vue.js和CSS动画创建一个动态且视觉上吸引人的滚动列表。这个列表将自动滚动显示项目&#xff0c;类似于轮播图的方式&#xff0c;非常适合用于仪表盘、排行榜或任何需要在有限空间内展示项目列表的应…...

分布式结构化数据表Bigtable

文章目录 设计动机与目标数据模型行列时间戳 系统架构主服务器Chubby作用子表服务器SSTable结构子表实际组成子表地址组成子表数据存储及读/写操作数据压缩 性能优化局部性群组&#xff08;Locality groups&#xff09;压缩布隆过滤器 Bigtable是Google开发的基于GFS和Chubby的…...

langchain 加载 csv,json

csv from langchain_community.document_loaders.csv_loader import CSVLoaderloader CSVLoader(file_pathdata/专业描述.csv, csv_args{delimiter: ,,quotechar: ",fieldnames: [专业, 描述] }, encodingutf8, source_column专业)data loader.load() print(data)quote…...

Java-常见面试题收集(十三)

二十二 Redis 1 Redis 作用 Redis&#xff0c;全称Remote Dictionary Server&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写的、支持网络的、基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。它主要用于缓存数据的计算…...

第二证券策略:股指预计维持震荡格局 关注汽车、工程机械等板块

第二证券指出&#xff0c;指数自今年2月份阶段低点反弹以来&#xff0c;3月份持续高位整理。进入4月份之后面对年报和一季报的双重财报发表期&#xff0c;预计指数短期保持高位整理概率比较大。前期缺乏成绩支撑的概念股或有回落的危险&#xff0c;主张重视成绩稳定、估值低、分…...

hcia datacom课程学习(6):路由与路由表基础

1.路由的作用 不同网段的设备互相通信需要具有路由功能的设备进行转发 具有路由功能的设备不一定是路由器&#xff0c;交换机可以有路由功能&#xff0c;同样的&#xff0c;路由器也可以有交换功能&#xff0c;像家里常用的路由器就是集路由功能和交换功能于一体的 2.路由相…...

AI PC元年,华为的一张航海图、一艘渡轮和一张船票

今天&#xff0c;从学术研究者到产业投资者&#xff0c;无不认为大模型掀起了一场人工智能的完美风暴。 所谓“完美风暴”&#xff0c;指的是一项新技术的各个要素&#xff0c;以新的方式互相影响、彼此加强&#xff0c;组合在一起形成了摧枯拉朽般的力量。 而我们每个人&#…...

NAT技术

网络技术深似海呀&#xff0c;一段时间不用又忘。 是什么 NAT技术是网络防火墙技术的一部分&#xff0c;可以作用在linux防火墙或者设备防火墙&#xff0c;NAT技术可以实现地址和端口的转换&#xff0c;主要还是为了网络连通性。 作用 存在以下三个IP&#xff0c;A(10.234.…...

新能源汽车“价格战”之后,充电桩主板市场将会怎样?

2024年2月底&#xff0c;国内新能源汽车市场开启了一场前所未有的“价格战”↓ 比亚迪率先抛出“王炸”车型——秦PLUS荣耀版和驱逐舰05荣耀版&#xff0c;起售价低至7.98万元&#xff0c;打响了价格战的“第一枪”&#xff0c;引爆了平静的汽车市场。 “电比油低”就此拉开序…...

appium driver install uiautomator2 安装失败

报错 Installing ‘uiautomator2’ using NPM install spec ‘appium-uiautomator2-driver’ Error: Encountered an error when installing package: npm command ‘install --save-dev --no-progress --no-audit --omitpeer --save-exact --global-style --no-package-lock…...

学浪已购买视频怎么下载到本地?

许多学习者在学浪购买了丰富的课程&#xff0c;然而&#xff0c;一些课程存在时间限制&#xff0c;使得学习者希望将其下载并永久保存。在这里&#xff0c;我们将介绍一款名为小浪助手的工具&#xff0c;它能够帮助你轻松将学浪已购买的视频下载到本地&#xff0c;让学习变得更…...

k8s-pod设置执行优先级

Pod的优先级管理是Kubernetes调度中的一个重要特性&#xff0c;通过PriorityClass&#xff08;优先级类&#xff09;的设置&#xff0c;我们可以为Pod指定不同的优先级&#xff0c;从而在资源有限的情况下更精细地调整调度顺序 什么是PriorityClass&#xff1f; PriorityClass是…...

const修饰指针

const修饰指针 常量指针 特点为指针的指向可以改&#xff0c;但是指针指向的值不可以修改 int a 10; int b 20; const int *p &a; *p 20; //错误&#xff0c;指针的指向的值不可更改 p &b; //正确 指针常量 特点是指针的指向不可以改&#xff0c;指针指向的值…...

php关于序列化r的指向

在PHP中&#xff0c;序列化字符串的索引是根据序列化过程中值的出现顺序来确定的。每个值&#xff08;包括数组的键和值&#xff09;在序列化字符串中都会被赋予一个顺序索引。为了理解这个顺序&#xff0c;我们需要知道以下几点&#xff1a; 序列化时&#xff0c;数组的键和值…...

手机主板级维修

在智能手机高度普及的今天&#xff0c;一块主板几乎承载了用户所有的数字生活——从个人照片、工作文档到社交聊天记录。当设备遭遇进水、重摔或系统崩溃时&#xff0c;普通软件扫描往往束手无策&#xff0c;而“手机数据恢复”中的主板级维修技术&#xff0c;正成为破解这类“…...

Midjourney版本战争白皮书(V7终结篇 vs V8统治纪元):从token消耗策略、种子可控性、多主体一致性到商用合规链路的断代式升级

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;V7终结篇与V8统治纪元的战略分水岭 V7 版本的正式 EOL&#xff08;End-of-Life&#xff09;标志着一个技术周期的谢幕&#xff0c;而 V8 的全面 GA&#xff08;General Availability&#xff09;则开启…...

革命性AI图像生成工具Fooocus:让创意触手可及的完整解决方案

革命性AI图像生成工具Fooocus&#xff1a;让创意触手可及的完整解决方案 【免费下载链接】Fooocus Focus on prompting and generating 项目地址: https://gitcode.com/GitHub_Trending/fo/Fooocus 你是否曾经被复杂的AI绘画工具吓退&#xff1f;Fooocus正是为你打造的解…...

网安信息收集

声明&#xff1a;任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全 的活动&#xff1b;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具&#xff1b;明知他人从事危害网络安…...

紧急预警:Midjourney即将下架Nihonga相关风格标签?(内部消息+已存档的5类不可再生提示词组合,仅限今日开放获取)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Nihonga风格在Midjourney中的历史定位与美学内核 Nihonga&#xff08;日本画&#xff09;作为明治维新后确立的现代民族绘画体系&#xff0c;以天然矿物颜料、金箔银箔、胶质媒介及传统和纸为物质基础&…...

TinyRedis随笔

在TinyRedis的内存与AOF之间的关系中&#xff0c;AOF接入点在命令层中&#xff0c;因为只有在执行写命令&#xff0c;修改DB内存之后&#xff0c;再对AOF文件进行写入。但是这里也存在一个问题&#xff0c;如果对aof文件写入失败了呢&#xff0c;那就会造成内存与aof文件数据不…...

微创式电子设备设计:从自动化到自主化的智能革命

1. 项目概述&#xff1a;从“工具”到“魔法”的隐形革命十几年前&#xff0c;我在《EE Times》上读到一篇由西蒙巴克&#xff08;Simon Barker&#xff09;撰写的文章&#xff0c;标题是一个直击灵魂的提问&#xff1a;“微创式电子设备在哪里&#xff1f;” 这个问题像一颗种…...

别再乱装驱动了!Ubuntu 20.04显卡驱动‘掉了’的终极排查与修复思路

Ubuntu 20.04显卡驱动失效的系统化诊断与修复指南 当你正专注于一个重要项目时&#xff0c;突然发现Ubuntu的NVIDIA显卡驱动"神秘消失"——这种体验对Linux用户来说简直像一场噩梦。nvidia-smi命令返回"驱动未加载"&#xff0c;外接显示器黑屏&#xff0c;…...

AI编程助手效率革命:结构化配置与提示词工程实战

1. 项目概述&#xff1a;一个为AI编程时代量身定制的开发者工具箱如果你和我一样&#xff0c;日常开发已经离不开像 Cursor 和 Claude 这样的 AI 编程助手&#xff0c;那你肯定也遇到过类似的困扰&#xff1a;每次开启一个新项目&#xff0c;或者在不同项目间切换时&#xff0c…...

如何高效使用炉石传说脚本:终极完整指南解决你的自动化难题

如何高效使用炉石传说脚本&#xff1a;终极完整指南解决你的自动化难题 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 你是否厌倦了炉石传说中重复性的…...