【前言】

现在Maven项目风靡全球,不可否认的是Maven在解决项目依赖关系十分的给力;不过传递依赖也会有很多坑;接下来给大家分享一下我们项目中是如何解决传递依赖。

【传递依赖中哪些事儿】

         一、传递依赖

1、什么是传递依赖

比如有Maven项目A,项目B依赖项目A,项目C依赖项目B;那么项目C依赖项目A;依赖的关系为:C—>B—>A;当我们在执行项目C时,会把项目B和项目A的包都下载下来导入到项目C的Jar文件夹中。

2、传递依赖中存在问题

(1)短路优先:依赖路径的长度不同:

A—>B—>C—>D—>E—>Y(version 1.0.0)

A—>F—>Y(version 2.0.0)

A依赖于Y(version 2.0.0)

(2)先声明优先:如果依赖路径长度相同情况:

A—>E—>Y(version 1.0.0)

A—>F—>Y(version 2.0.0)

则在项目A的<depencies></depencies>中,E、F那个在先则A依赖哪条路径的Y

         二、我们项目中如何避免传递依赖

1、先来一张项目之间各个模块的调用图;

2、服务A依赖服务B;先把B服务的API依赖到服务A的Service下;

3、但是有时服务A的API和Web也需要用到服务B的API;这时我们在API中引入服务B的API不过将scope设置成provide;在Web中将服务B的API引入过来;这样既保证了A服务的Service和Web都能依赖到同时又防止了A服务的API被别的服务依赖后将B服务的API也依赖过去;这也是为什么我们不在A服务的API只写一个或者在A服务的parent中只写一个的原因;

         三、推荐一款Idea分析maven依赖插件Maven Helper

1、在Idea中安装该插件

2、利用该插件进行分析

【总结】

传递依赖处理不好会有潜在的坑,会引起版本不一致,乱调用等等;而且这种问题排查起来困难度相对较大;所以要在项目建立之初就要有好的规范去约束,大家在开发的时候要严格遵守规范。

智能一代云平台(三十六):项目中如何做到避免传递依赖相关推荐

  1. 智能一代云平台(十九):选修课---类似秒杀的高并发业务

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 选课,考试,评教这三个功能是我们的云平台中的重头戏:并发高是这三个功能的一个共同特点, ...

  2. 智能一代云平台(十):Jboss远程访问流程总结

    [前言] 最近在做一个EJB相关的项目,在做的过程用到了远程调用的相关东西,自己进行一下梳理和总结,在此与大家分享. [相关流程]      一.对EJB和Jboss两者梳理: 1.小感:大多数情况下 ...

  3. 智能一代云平台(十二):轮次设置

    ​强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan [前言] 基础系统是云平台中十分重要的一个子系统,它为其他系统提供了基础数据的支撑:基础系统中有 ...

  4. 避暑山庄消失的三十六景,曾经那么美!

    来源: 老家热河 过去 老家热河曾先后推出了几篇 承德人李树介绍避暑山庄的文章 图文并茂,知识性强 受到很多读者朋友的欢迎 今天 李树又为我们带来了 避暑山庄遗存三十六景 一起看看都是哪里吧 避暑山庄 ...

  5. 智能一代云平台(三十):逆向工程生成mybatis

    [前言] 最近在研究mybatis逆向工程的一些东西:通过研究Mybatis+通用mapper.逆向工程生成mybatis.Hibernate+mybatis:最终综合这些优点实现了一个我们自己的逆向 ...

  6. 智能一代云平台(二十九):通用mapper的改造

    [前言] 最近研究一下Mybatis的通用mapper,然后对其进行了一些改造以适合我们的系统,接下来为大家分享一下我的研究思路以及研究成果. [研究之路]      一.ORM框架选型: 1.我们最 ...

  7. 智能一代云平台(三十一):mybatis加入分页

    [前言] 在<智能一代云平台(三十):逆向工程生成mybatis>已经将mybatis的逆向工程搞定了:但是美中不足的是mybatis的分页查询:接下来一起来探索一下分页查询. [分页查询 ...

  8. 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索

    第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果. 时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微 ...

  9. 智能一代云平台(五):移动开发之环境搭建

    [前言] 谣传最近IT领域异常火热,而IT中的移动端领域更是如日中天. 做为一名程序猿的我,也不甘Out:于是雄心勃勃参加一个智能一代云平台移动端项目开发:之前有人做了第一版,现在我们需要重构. [基 ...

最新文章

  1. 《 嵌入式系统设计与实践》一一3.6 测试硬件(和软件)
  2. R语言使用pwr包的pwr.r.test函数对相关信息分析进行效用分析(power analysis)、在已知效应量(effect size)、显著性水平、效用值的情况下计算需要的样本量
  3. 分布式架构--基本思想汇总
  4. c语言switch结构计算利润,求助。。关于用switch编写简易计算器
  5. python求最大值代码的方式_python使用分治法实现求解最大值的方法
  6. C#中的overload,overwrite,override的语义区别
  7. Win11添加新的Microsoft Teams集成:共享屏幕变得更容易
  8. 《SQL基础教程》((日)MICK)PDF
  9. oracle 怎么清空数据表,oracle怎么清空表数据,oracle清空数据库
  10. 计算机通信普遍采用报文交换,报文交换
  11. 永久域名存在吗?永久域名注册流程是什么样的?
  12. android应用推荐
  13. 用C++(附源码)制作一款功能强大,自动偷菜QQ农场辅助!
  14. Word文档保护怎么取消
  15. UE4 C++与UMG
  16. 03、订单商品信息表.sql
  17. MySQL 检索昵称字段合法中文/日文字符对于 5.7/5.6 版本失败的解决方案
  18. 英文字母的大小写互换,将所有都变成小写,所有都变成大写 位运算实现
  19. java根据经纬度转地址或者根据地址转经纬度
  20. LVS 引入keepalived自动切换机制

热门文章

  1. 淘宝、飞猪、闲鱼都挂了,阿里云却正常?!
  2. 宇宙第一 IDE Visual Studio 支持 Java 了!
  3. GitHub 发布 2018 年开源项目趋势预测:跨平台、深度学习增长最快!
  4. 安卓恶意软件Skygofree爆发,连你的照片都能监控到
  5. JAVA day04 数组排序,类和对象
  6. 第 14 章 享元模式
  7. zookeeper集群为什么是单数
  8. python天天向上的力量三天打鱼两天晒网_天天向上的力量
  9. cad在线转换低版本_别再傻瓜式操作了,工作效率上不去?这6个小技巧带你玩转CAD...
  10. java泛型实例化_java基础-泛型举例详解