微服务中如何使用Maven的BOM来管理版本依赖
创始人
2024-12-24 10:42:03
0次

BOM简介

BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。

为什么要使用BOM

使用BOM除了可以方便使用者在声明依赖的客户端时不需要指定版本号外,最主要的原因是可以解决依赖冲突,如考虑以下的依赖场景:

项目A依赖项目B 2.1和项目C 1.2版本: 项目B 2.1依赖项目D 1.1版本; 项目C 1.2依赖项目D 1.3版本;

在该例中,项目A对于项目D的依赖就会出现冲突,按照maven dependency mediation的规则,最后生效的可能是:项目A中会依赖到项目D1.1版本(就近原则,取决于路径和依赖的先后,和Maven版本有关系)。

在这种情况下,由于项目C依赖1.3版本的项目D,但是在运行时生效的确是1.1版本,所以在运行时很容易产生问题,如 NoSuchMethodError, ClassNotFoundException等。

如何定义BOM

BOM本质上是一个普通的POM文件,区别是对于使用方而言,生效的只有这一个部分。只需要在定义对外发布的客户端版本即可:

 4.0.0  com.ydj.qd  inf-bom  1.0  pom  inf-bom  第三方jar包统一管理      UTF-8    UTF-8    1.8    4.3.15.RELEASE                                  com.alibaba        druid        1.1.12                          com.aliyun.mns        aliyun-sdk-mns        1.1.8        jar-with-dependencies                    com.alibaba        fastjson        1.2.29                          org.apache.commons        commons-lang3        3.3.2                    commons-collections        commons-collections        3.2.2                    org.apache.commons        commons-collections4        4.1                    commons-beanutils        commons-beanutils        1.9.1                                com.google.guava        guava        27.0.1-jre                    com.google.code.gson        gson        2.8.5                          joda-time        joda-time        2.7                    org.projectlombok        lombok        1.14.4                            maven-releases      maven-releases      http://mvn.ydj.com/repository/maven-releases/              maven-snapshots      maven-snapshots      http://mvn.ydj.com/repository/maven-snapshots/      

项目使用方法

在你的项目主pom.xml文件中节点下首位处加入如下:

           com.jlcx.qd      inf-bom      ${version}      pom      import                    ...      

在需要使用相关JAR包的pom.xml文件中节点下引入如下:

 ...      com.google.guava    guava        commons-collections    commons-collections    ....

如果需要使用不同于当前bom中所维护的jar包版本,则加上覆盖即可,如:

 ...      com.google.guava    guava        commons-collections    commons-collections    3.2.1    ....

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...