微服務之BOM定義
BOM (Bill Of Materials) 是由maven提供的功能,它通過定義一整套相互相容的jar包版本集合,使用時只需要依賴該BOM檔案,即可放心的使用需要的jar包,且無需在指定版本號。BOM的維護方負責版本升級,並保證BOM定義的jar包之間的相容性。
為什麼要使用BOM
使用BOM除了可以方便使用者在宣告依賴的客戶端時不需要指定版本號外,最主要的原因是可以解決依賴衝突。
如何定義BOM
BOM 本質上是一個普通的POM檔案,區別是對於使用方而言,生效的只有 ** dependencyManament ** 這一個部分,也只是需要在 ** dependencyManament ** 定義對於對外發布的客戶端版本即可:
<?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.test.xx</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>
專案中如何使用BOM
在你的專案主pom.xml檔案中 節點下首位處加入如下
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.test.xx</groupId>
<artifactId>cloud-bom</artifactId>
<version>${version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
...
</dependency>
</dependencies>
</dependencyManagement>
在需要使用相關JAR包的pom.xml檔案中節點下引入如下:
<dependencies>
...
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</dependency>
....
</dependencies>
相關文章
- 微服務定義及.Net Core中用的技術微服務
- JS學習之Bom(window和定時器)JS定時器
- [Spring Cloud Tutorial翻譯系列]微服務-定義、原則、好處SpringCloud微服務
- 微服務17:微服務治理之異常驅逐微服務
- Spring Cloud之微服務之間相互呼叫、如何讓一個微服務呼叫另外一個微服務SpringCloud微服務
- celery筆記七之週期/定時任務及crontab定義筆記
- 微服務開發的意義 微服務與分散式的關係微服務分散式
- 微服務開發攻略之淺析微服務架構微服務架構
- 微服務之Eureka服務發現微服務
- PHP 微服務之 [分散式事務]PHP微服務分散式
- PHP 微服務之【分散式事務】PHP微服務分散式
- 微服務之springcloud eureka(一)微服務SpringGCCloud
- springcloud 微服務 之 Eureka 配置SpringGCCloud微服務
- 微服務18:微服務治理之異地多活容災微服務
- 事務基本定義操作
- JavaScript基礎之BOM操作JavaScript
- 《JavaScript 闖關記》之 BOMJavaScript
- Maven依賴管理之BOMMaven
- BOM與DOM之DOM操作
- go-zero微服務實戰系列(三、API定義和表結構設計)Go微服務API
- 微服務架構之「 服務註冊 」微服務架構
- 《吃透微服務》 - 服務容錯之Sentinel微服務
- 架構之:微服務和單體服務之爭架構微服務
- 微服務實踐之分散式定時任務微服務分散式
- Eureka微服務之間呼叫-feign微服務
- Eureka的微服務之間呼叫微服務
- 微服務之間的相互呼叫微服務
- 微服務SpringCloud之熔斷器微服務SpringGCCloud
- 微服務架構之「 配置中心 」微服務架構
- 微服務7:通訊之RPC微服務RPC
- 微服務之間如何共享DTO?微服務
- @Scheduled 定時任務自定義
- 使用 TypeScript 定義業務字典TypeScript
- SpringCloud微服務系列- 分散式能力建設之微服務閘道器SpringGCCloud微服務分散式
- 微服務Consul系列之服務部署、搭建、使用微服務
- 前端基礎之JavaScriptDOM和BOM前端JavaScript
- 前端基礎之BOM和DOM前端
- qt之函式重定義QT函式