微服务中使用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/
    
  

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:微服务中使用MavenBOM来管理你的版本依赖详解-创新互联
URL分享:http://azwzsj.com/article/ccsdpp.html