BOM簡介
創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、惠東網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5高端網(wǎng)站建設、商城網(wǎng)站定制開發(fā)、集團公司官網(wǎng)建設、外貿網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為惠東等各大城市提供網(wǎng)站開發(fā)制作服務。
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的依賴就會出現(xiàn)沖突,按照maven dependency mediation的規(guī)則,最后生效的可能是:項目A中會依賴到項目D1.1版本(就近原則,取決于路徑和依賴的先后,和Maven版本有關系)。
在這種情況下,由于項目C依賴1.3版本的項目D,但是在運行時生效的確是1.1版本,所以在運行時很容易產(chǎn)生問題,如 NoSuchMethodError, ClassNotFoundException等。
如何定義BOM
BOM本質上是一個普通的POM文件,區(qū)別是對于使用方而言,生效的只有
<?xml version="1.0" encoding="UTF-8"?>4.0.0 com.ydj.qd inf-bom 1.0 pom inf-bom 第三方jar包統(tǒng)一管理 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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。