微服务中使用MavenBOM来管理你的版本依赖详解
BOM简介
创新互联建站专注于企业营销型网站、网站重做改版、惠东网站定制设计、自适应品牌网站建设、H5高端网站建设、商城网站定制开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为惠东等各大城市提供网站开发制作服务。
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文件,区别是对于使用方而言,生效的只有
<?xml version="1.0" encoding="UTF-8"?>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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
网站题目:微服务中使用MavenBOM来管理你的版本依赖详解
文章分享:http://scyanting.com/article/pphpcj.html