我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Maven依赖关系是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Maven依赖关系是什么

这篇文章主要介绍“Maven依赖关系是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Maven依赖关系是什么”文章能帮助大家解决问题。

1.何为依赖?

我们在平时的项目开发中也是同理,你需要依赖一些东西才能实现相应的功能,但相应的功能或许也可以依赖其它的东西实现,比如数据库操作吧,你可以依赖hibernate,但你也可以通过mybatis来做。

这就是所谓的依赖关系咯。

以前我们需要手动的去找hibernate或者mybatis的jar包,系统抛异常我们还不知哪里报错,通过琢磨才明白没有引入相应的jar包,然后就去找啊找,找到了然后引入到工程当中。在这里我们就看到maven的好处了,它就是一个仓库,仓库里面有各种各样的包,想要什么就在pom.xml中依赖一下就好了,就算仓库中没有的包也可以把它扔到仓库中,想用的时候就依赖一下。

2.依赖传递的范围

(1)根据Jar包的不同,需要为其设置不同的传递方式,即传递范围。Maven中的依赖传递范围设置在<scope>标签中。其取值有6种:

1)compile

第1类Jar包应设置的范围。是默认值。其会向下传递该依赖。

2)test

第2类Jar包应设置的范围。其不会向下传递该依赖。

3)provided

第3类Jar包应设置的范围。其不会向下传递该依赖。

4)runtime

第4类Jar包应设置的范围。其会向下传递该依赖。

5)system

不从本地仓库查找指定的依赖,而从<systemPath>路径查找。

3.依赖关系分类

A.直接依赖

项目A要用到别的项目B的架构的东西,所以项目A直接依赖B项目

B.间接依赖

项目B依赖A,C依赖B,那么C间接依赖A

C.依赖传递性

Maven的依赖是具有传递性的,比如A-&gt;B,B-&gt;C,那么A间接的依赖于C,这就是依赖的传递性,其中A对于B是第一直接依赖,B对于C是第二直接依赖,C为A的传递性依赖。

D.可选依赖与排除依赖

传递性依赖会给项目隐式的引入很多依赖,这极大的简化了项目依赖的管理,但是有些时候这种特性也会带来问题,它可能会把我们不需要的jar包也引入到了工程当中,使项目结构变得更复杂。或者你想替换掉默认的依赖换成自己想要的jar包,这时候就需要用到依赖排除。

Maven依赖关系是什么

例子中spring-core包依赖了commons-logging包,我们使用exclusions元素声明排除依赖,exclusions可以包含一个或者多个exclusion子元素,因此可以排除一个或者多个传递性依赖。需要注意的是,声明exclusions的时候只需要groupId和artifactId,而不需要version元素,这是因为只需要groupId和artifactId就能唯一定位依赖图中的某个依赖。换句话说,Maven解析后的依赖中,不可能出现groupId和artifactId相同,但是version不同的两个依赖。

Maven依赖关系是什么

E.依赖冲突(调解)

下面我们来思考这样一个问题,如果A-&gt;B-&gt;C-&gt;X(1.0),A-&gt;D-X(2.0),即A间接依赖X,我们可以看到有两条路径都依赖X,那么maven将会选择哪个版本的X?maven当中有一套自己的规则,我们来说明一下,maven传递性依赖的一些规则以及如何排除依赖冲突。

Maven里面对于传递性依赖有以下几个规则:

1.最短路径原则:如果A对于依赖路径中有两个相同的jar包,那么选择路径短的那个包,路径最近者优先,上述会选X(2.0)。

2.第一声明优先原则:如果A对于依赖路径中有两个相同的jar包,路径长度也相同,那么依赖写在前面的优先。例如:A->B->F(1.0),A->C->F(2.0),会选F(1.0)。

3.可选依赖不会被传递,如A->B,B->;C,B->;D,A对B直接依赖,B对C和D是可选依赖,那么在A中不会引入C和D。可选依赖通过optional元素配置,true表示可选。如果要在A项目中使用C或者D则需要显式地声明C或者D依赖。

版本号统一管理

聚合

在Maven中,可能我们要做多个test,但是一个一个的测试去做,这样会很麻烦,为了简单方便,我们把所有的test package,都汇聚到一个package中,我们利用这个测试可以进行所有的test的测试,这个过程就是聚合。目前菜鸟的水平来看这个聚合,主要功能就是方便Test的!

关于“Maven依赖关系是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Maven依赖关系是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Maven依赖关系是什么

这篇文章主要介绍“Maven依赖关系是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Maven依赖关系是什么”文章能帮助大家解决问题。1.何为依赖?我们在平时的项目开发中也是同理,你需要依赖一些
2023-06-26

Maven的传递性依赖是什么

Maven的传递性依赖指的是当一个项目依赖于另一个项目时,如果被依赖的项目又依赖于其他项目,那么这些依赖也会被自动引入到当前项目中。这种传递性依赖使得开发者无需手动管理所有依赖项,而是通过声明直接依赖的项目,Maven会自动处理所有的传递性
Maven的传递性依赖是什么
2024-04-09

maven项目导入依赖的方法是什么

要导入依赖到Maven项目中,可以按照以下方法进行:1. 在项目的pom.xml文件中添加依赖配置。pom.xml是Maven项目的配置文件,位于项目根目录中。在pom.xml中的dependencies节点下添加需要的依赖项,例如:```
2023-08-08

maven怎么排除依赖包的子依赖

在Maven中,排除依赖包的子依赖可以通过在pom.xml文件中使用标签来实现。例如,假设要排除spring-boot-starter-web依赖包的子依赖中的spring-boot-starter-tomcat依赖,可以在pom.xml文
2023-09-23

maven循环依赖解决的方法是什么

Maven循环依赖的解决方法有以下几种:1. 模块重构:将循环依赖的模块进行重构,将共享的代码提取出来,放在一个新的模块中,其他模块依赖该新模块,避免了循环依赖。2. 接口隔离原则:检查循环依赖的原因,看是否存在接口隔离原则的问题。如果存在
2023-09-29

maven多个项目之间的依赖关系管理

本篇内容主要讲解“maven多个项目之间的依赖关系管理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“maven多个项目之间的依赖关系管理”吧!1.应用Aggregation管理多个子项目Mave
2023-06-17

maven依赖的version声明控制方式是什么

这篇“maven依赖的version声明控制方式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“maven依赖的vers
2023-06-26

怎么排除Maven依赖项的传递性依赖

有以下几种方法可以排除Maven依赖项的传递性依赖:使用元素:在pom.xml文件中,可以使用元素排除指定依赖项的传递性依赖。例如:com.example
怎么排除Maven依赖项的传递性依赖
2024-04-09

maven怎么添加本地依赖

要添加本地依赖到Maven项目中,可以使用Maven的`system`作用域来引用本地的jar文件。以下是添加本地依赖的步骤:将本地jar文件安装到本地Maven仓库。可以使用以下命令:mvn install:install-file
2023-10-27

maven依赖爆红的原因及解决方法是什么

Maven依赖爆红的原因可能有以下几种:1. 缺少依赖:Maven项目的pom.xml文件中可能缺少了某些依赖的声明,导致编译器无法找到相应的类或方法。2. 版本冲突:项目中可能存在多个依赖包,它们之间的版本可能不兼容,导致编译器无法确定使
2023-09-17

maven依赖冲突的原因及解决方法是什么

Maven依赖冲突的原因可能是由于以下几个因素:1. 版本不匹配:当项目中存在多个依赖项,并且这些依赖项使用了不同的版本时,可能会导致依赖冲突。2. 传递性依赖:当一个依赖项依赖于另一个依赖项,并且这两个依赖项的版本不兼容时,也可能会引发依
2023-09-23

PHP 调试 Composer 依赖:解决依赖关系问题

调试 composer 依赖关系问题解决依赖关系问题的方法:检查 composer.lock 文件使用 composer show-root-requires强制刷新依赖关系设置调试模式实际案例:包冲突: 使用 composer show-
PHP 调试 Composer 依赖:解决依赖关系问题
2024-05-12

怎么实现Java模块与inter-module Maven构建测试依赖关系

这篇文章主要介绍“怎么实现Java模块与inter-module Maven构建测试依赖关系”,在日常操作中,相信很多人在怎么实现Java模块与inter-module Maven构建测试依赖关系问题上存在疑惑,小编查阅了各式资料,整理出简
2023-06-02

Maven坐标与依赖怎么配置

这篇文章主要介绍了Maven坐标与依赖怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Maven坐标与依赖怎么配置文章都会有所收获,下面我们一起来看看吧。1. 坐标-找到项目依赖的重要依据
2023-06-26

idea怎么离线导入maven依赖

要离线导入Maven依赖,您需要执行以下步骤:1. 在离线环境中下载所需的Maven依赖的JAR文件。您可以在其他计算机上使用Maven进行依赖解析,并将所需的依赖从Maven本地存储库(默认为`/.m2/repository`)中复制到离
2023-09-16

EWeb4J的pom依赖是什么

这篇文章主要介绍“EWeb4J的pom依赖是什么”,在日常操作中,相信很多人在EWeb4J的pom依赖是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”EWeb4J的pom依赖是什么”的疑惑有所帮助!接下来
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录