国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

微服務中使用Maven BOM來管理你的版本依賴詳解

2024-07-09 22:42:20
字體:
來源:轉載
供稿:網友

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文件,區別是對于使用方而言,生效的只有<dependencyManagement>這一個部分。只需要在<dependencyManagement>定義對外發布的客戶端版本即可:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.ydj.qd</groupId>  <artifactId>inf-bom</artifactId>  <version>1.0</version>  <packaging>pom</packaging>  <name>inf-bom</name>  <description>第三方jar包統一管理</description>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    <java.version>1.8</java.version>    <spring.version>4.3.15.RELEASE</spring.version>  </properties>  <dependencyManagement>    <dependencies>      <!-- 阿里 -->      <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->      <dependency>        <groupId>com.alibaba</groupId>        <artifactId>druid</artifactId>        <version>1.1.12</version>      </dependency>      <!-- https://mvnrepository.com/artifact/com.aliyun.mns/aliyun-sdk-mns -->      <dependency>        <groupId>com.aliyun.mns</groupId>        <artifactId>aliyun-sdk-mns</artifactId>        <version>1.1.8</version>        <classifier>jar-with-dependencies</classifier>      </dependency>      <dependency>        <groupId>com.alibaba</groupId>        <artifactId>fastjson</artifactId>        <version>1.2.29</version>      </dependency>      <!-- Apache -->      <dependency>        <groupId>org.apache.commons</groupId>        <artifactId>commons-lang3</artifactId>        <version>3.3.2</version>      </dependency>      <dependency>        <groupId>commons-collections</groupId>        <artifactId>commons-collections</artifactId>        <version>3.2.2</version>      </dependency>      <dependency>        <groupId>org.apache.commons</groupId>        <artifactId>commons-collections4</artifactId>        <version>4.1</version>      </dependency>      <dependency>        <groupId>commons-beanutils</groupId>        <artifactId>commons-beanutils</artifactId>        <version>1.9.1</version>      </dependency>      <!-- 谷歌 -->      <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->      <dependency>        <groupId>com.google.guava</groupId>        <artifactId>guava</artifactId>        <version>27.0.1-jre</version>      </dependency>      <dependency>        <groupId>com.google.code.gson</groupId>        <artifactId>gson</artifactId>        <version>2.8.5</version>      </dependency>      <!-- 常用工具 -->      <dependency>        <groupId>joda-time</groupId>        <artifactId>joda-time</artifactId>        <version>2.7</version>      </dependency>      <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>        <version>1.14.4</version>      </dependency>    </dependencies>  </dependencyManagement>  <build>  </build>  <distributionManagement>    <repository>      <id>maven-releases</id>      <name>maven-releases</name>      <url>http://mvn.ydj.com/repository/maven-releases/</url>    </repository>    <snapshotRepository>      <id>maven-snapshots</id>      <name>maven-snapshots</name>      <url>http://mvn.ydj.com/repository/maven-snapshots/</url>    </snapshotRepository>  </distributionManagement></project>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜宾市| 东乡| 绥化市| 抚顺县| 资溪县| 独山县| 龙岩市| 上犹县| 曲阜市| 三河市| 桑日县| 郧西县| 哈尔滨市| 衢州市| 从江县| 四子王旗| 宁德市| 桦甸市| 永吉县| 太仆寺旗| 庆元县| 河曲县| 象山县| 石楼县| 互助| 壶关县| 黔江区| 老河口市| 阜阳市| 盐池县| 宜黄县| 姜堰市| 子长县| 彰武县| 旌德县| 理塘县| 衡南县| 青铜峡市| 鹤峰县| 基隆市| 余干县|