依赖是什么?

依赖是maven项目引用的资源jar包,依赖范围就是这些资源架包在maven项目中的作用范围,反过来说,maven项目通过依赖范围来控制何时引用资源jar包。”

关于依赖的问题

我们可以在web.xml中配置依赖,即<dependency>里面,基本格式如图2所示(optional基本配置可不要)

我们告诉xml文件,我们需要的jar包,需要的版本,maven就去仓库中找,找到之后会为我们自动加载(前面博文中有细说maven仓库)

而由于每个项目每个servlet需要的依赖不同,并且servlet与servlet之间存在着依赖传递,则当依赖的jar包有与依赖传递中的jar包有版本冲突时,关于maven到底使用哪一个jar包有如图一所示的处理优先方法。

图1

路径优先即指,依赖的依赖的依赖逐次递减优先级,自己的依赖优先于传递得到的依赖。

另外,在xml文件中后配置的会覆盖前面配置的内容。

图2

现在项目中有两个servlet,01与02;且01中的依赖有a,02中现存的依赖是b

01中配置了02,此时02就依赖传递了,01就有了a,b。

若不想在01中看见02中依赖的b,则可以在02的b依赖中添加<optional></optional>标签,且把属性改为true,如图2所示。

图3

同理,当01自己主动不想要02中传递依赖的b时,可以参考图3所示内容,排除依赖。

图4

在配置依赖时,还可以添加scope标签,表示依赖的作用范围,参数有四个,分别是图4中的compile,test,provided,runtime。compile是默认的,在不添加scope标签时默认取值为compile。

每个标签表示作用范围也如图4所示。

图5

当scope标签遇到依赖传递依赖问题时,若同一个jar包,01中的scope取的是compile,02(间接依赖)取的是runtime,依据图5可知,最后scope取的是runtime范围。

当然,由于在早期的web工程中并不支持@WebServlet注解配置,甚至不支持El表达式(在web 3.0版本之后才支持)在web3.0版本之后的版本也支持注解配置,注解配置就能有效减少jar包配置的臃肿程度。

Maven学习:依赖管理相关推荐

  1. Maven项目依赖管理 学习笔记

    本学习笔记根据慕课视频[Maven项目依赖管理]摘录,主要学习maven的使用方式,从理念到实践.基础到应用,掌握基于maven管理java项目的方式. 目录 第一章 Maven概述 Maven简介 ...

  2. Maven学习(3)Maven的依赖管理

    目录 依赖存放的地方:Repository(仓库) 通过pom文件查找依赖的依赖 循环依赖 依赖版本冲突和依赖调解 依赖传递 依赖的作用域 Exclusions 依赖管理的简化:Dependency ...

  3. Maven项目依赖管理工具

    学习教程: https://www.yiibai.com/maven/ Maven不仅可以管理jar包,还可以管理我们项目中对其他子模块的引用: mvn claen 在"target&quo ...

  4. Maven的依赖管理

    Maven的一个核心特性就是依赖管理.当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成一项困难的任务.Maven展示出了它对处理这种情形的高度控制. 传统的WEB项目中,我们必须将 ...

  5. Mvn : Maven的依赖管理 依赖冲突 解决思路

    文章目录 1.美图 2.依赖 3.依赖传递 4.依赖冲突 5.短路优先 6.声明优先 7.依赖排除 8.解决冲突 1.美图 视频参考:maven jar 包 冲突 的解决方式 2.依赖 Maven 核 ...

  6. java maven 项目依赖管理 简介

    目录 一.简单的小问题? 二.maven到底是什么? 三.maven的安装 四.仓库的概念 五.使用命令行管理maven项目 六.使用Myeclipse创建maven自定义项目 七.pom.xml的依 ...

  7. Maven之依赖管理

    最近在治理代码的时候,发现团队的依赖用的七零八乱,改个开源文件到处改的都是,实在令人不爽.于是我下决心把所有的pom文件的依赖集中到一个父pom中管理,这样,子pom只是引依赖,不带version标签 ...

  8. Maven笔记——依赖管理

    使用坐标导入jar包1) 在pom.xml中编写<dependencies>标签2) 在<dependencies>标签中使用<dependency>引入坐标3) ...

  9. [笔记]解决m2eclipse给项目添加maven依赖管理时可能不给项目的build path...

    为什么80%的码农都做不了架构师?>>>    解决办法:在m2eclipse提供的菜单里关闭项目的Maven依赖管理,然后再启动Maven的依赖管理!!! 检查:1)查看项目的.c ...

  10. maven java管理_java – 依赖管理与maven

    我最近成了Maven的大粉丝,用于控制我的应用程序的构建周期.然而,我遇到了一些粗暴的边缘与Maven的依赖管理.我想知道这些是否是工具和范例的限制,依赖管理的必要的邪恶,或者我是否使用错误的工具. ...

最新文章

  1. iOS10 UI教程视图的边界与视图的框架
  2. 汇编语言 利用栈 将数据逆序存放
  3. 汇编语言:编程,将datasg段中的每个单词改为大写字母
  4. python上下文管理关键字_理解 Python 的上下文管理器
  5. ArcGIS10.2最新全套下载地址
  6. python写采集程序_Python爬虫小说采集程序
  7. 常用图像处理库都有哪些?
  8. win7(32bit)下完整的搭建apache(2.2.x)+openssl(0.9.6-1.0.1升级)过程
  9. Python Boss
  10. 该怎么用pyqt5来实现数据的增、删、改、查功能...
  11. 【Java】巩固基础,温故知新——程序逻辑控制
  12. office2010分开显示
  13. 一文8个步骤从0到1实现Python+Selenium自动化测试项目实战【建议收藏】
  14. 百度云2017年春节假期服务公告
  15. 基于Android的游戏资讯APP设计
  16. html弹出框播放视频
  17. NICEGUI---ROS开发之中常用的GUI工具
  18. 什么叫光盘映像和虚拟光驱软件
  19. 智慧仓储之整体化应急物资仓储管理解决方案,减少成本,提高运营-新导智能
  20. java计算机毕业设计高校共享单车管理系统MyBatis+系统+LW文档+源码+调试部署

热门文章

  1. 测试之路-易水寒——之测试文档
  2. [笔记][总结] MIT线性代数 Gilbert Strang 对称矩阵
  3. Linux_shell——第5章 一团乱麻?没这回事
  4. 华为云和阿里云ECS服务器之间的区别
  5. 一个C病毒 - -!
  6. Node.js中LTS和Current的两种版本有啥区别?
  7. 解决《获取My Document目录错误,可能”我的文档“目录不存在》
  8. 我看你骨骼惊奇,是块做CTO的材料! 我看还是不要了
  9. 信息安全等级保护划分五级及等保级别适用行业
  10. 真正让你明白Hive调优系列3:笛卡尔乘积,小表join大表,Mapjoin等问题