使用bom统一管理maven项目中的依赖版本

news/2024/11/15 23:27:26/文章来源:https://www.cnblogs.com/wangmengmengm/p/18328405

背景

最近在做一个文件导入的功能时,领导觉得这个功能可以作为一个通用的组件给其他项目使用,让我将这个模块封装成一个组件上传到私服。
在进行过程中,我发现了问题:在我的模块中是要使用到spring-boot,lombok,easyexcel这些依赖,为了防止版本依赖冲突,我必须保持项目中依赖的版本与我组件中的版本一致,那么该如何保证多个项目之间公共依赖的版本一致呢?

答案是用bom来管理所有项目的公共依赖。

bom是什么

BOM 实际上是一个以 POM 类型定义的普通 Maven 项目,主要用于维护描述 Maven 项目所需的一系列公共依赖信息。通过引用 BOM 项目,可以实现对依赖版本的统一维护管理,而无需明确指定每个依赖项的版本号。

创建一个bom文件

bom文件只是用来管理依赖版本的,所以只需要pom文件即可。

新建一个maven项目,只保留pom文件
image
在pom文件中使用<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"><parent><artifactId>java-framework</artifactId><groupId>com.wangm</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>maven-bom</artifactId><packaging>pom</packaging><description>版本统一配置</description><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><spring.boot.version>2.5.5</spring.boot.version><spring.cloud.version>Greenwich.SR5</spring.cloud.version><spring.platform.version>Cairo-SR8</spring.platform.version><lombok.version>1.18.22</lombok.version><fastjson.version>1.2.83</fastjson.version><hutool.version>5.8.12</hutool.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>io.spring.platform</groupId><artifactId>platform-bom</artifactId><version>${spring.platform.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency></dependencies></dependencyManagement>
</project>

spring-boot-dependencies和platform-bom是spring提供的一系列版本兼容的依赖,直接引用可以省去很多麻烦

引入bom

此时,在我要开发的组件中我只需要引入maven-pom依赖,同时在项目中也引入maven-pom,这样就能保证所有项目的依赖统一管理

    <dependencyManagement><dependencies><dependency><groupId>com.wangm</groupId><artifactId>maven-bom</artifactId><version>1.0.0</version></dependency></dependencies></dependencyManagement>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/773078.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BUUCTF 6.[第五空间2019 决赛]PWN5 1

拿到题目,先运行一下很明显地出现了一个重复我们的输入,以及一个判断的过程,那么我们可以猜测可能会有栈溢出漏洞,让我们继续保护是开了一个canary 以及nx ,大概率就不是栈溢出漏洞了,因为canary的存在会使栈溢出非常麻烦。 我们看一下IDA存在栈溢出漏洞,但是由于长度不…

虚幻五学习 (三)

因为多人游戏需要多个客户端实现测试 所有我选择在虚拟机中配置win11 在学习hadoop中,已经安装好了VM虚拟机,现在只需要下载安装win11镜像 1.win 11官网下载:Download Windows 11 (microsoft.com)2.win11 (ISO)镜像文件百度网盘下载:链接:https://pan.baidu.com/s/1H800xw…

深度学习中常用损失函数介绍

选择正确的损失函数对于训练机器学习模型非常重要。不同的损失函数适用于不同类型的问题。本文将总结一些常见的损失函数,并附有易于理解的解释、用法和示例 https://avoid.overfit.cn/post/1435dd9dc90e420e965b3ab939363216

STM32F103 SPI详解及示例代码

SPI是嵌入式中使用比较广泛的协议之一,本文从该协议的原理入手对其进行了详细介绍,并结合STM32F103ZET主控芯片对其进行了说明,最后给出了两个实例代码demo供大家做参考。1 SPI协议详解SPI是串行外设接口(Serial Peripheral Interface)的缩写,是美国摩托罗拉公司(Motoro…

DBeaver连接mysql时,报错Public Key Retrieval is not allowed

解决 在新建连接的时候,驱动属性里设置 allowPublicKeyRetrieval 的值为 true。

JNI Functions

function:https://docs.oracle.com/en/java/javase/21/docs/specs/jni/functions.html jdk_down:https://www.oracle.com/java/technologies/downloads/archive/

Blender 4.2 LTS (macOS, Linux, Windows) - 开源 3D 创意软件 (渲染 建模 雕刻)

Blender 4.2 LTS (macOS, Linux, Windows) - 开源 3D 创意软件 (渲染 建模 雕刻)Blender 4.2 LTS (macOS, Linux, Windows) - 开源 3D 创意软件 (渲染 建模 雕刻) 创造的自由 Blender 获得 GNU GPL 许可,由其贡献者拥有。 因此,Blender 永远是免费和开源软件。 使命 以免费 /…

macOS Sequoia 15 beta 4 (24A5298h) Boot ISO 原版可引导镜像下载

macOS Sequoia 15 beta 4 (24A5298h) Boot ISO 原版可引导镜像下载macOS Sequoia 15 beta 4 (24A5298h) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新、备受瞩目的游戏和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https:/…

基于 token 的登陆系统的实现

这是一段防爬代码块,我不介意文章被爬取,但请注明出处 console.log("作者主页:https://www.cnblogs.com/w-blogg"); console.log("原文地址:https://www.cnblogs.com/w-blogg/p/18328093");最近公司搞新项目,有个需求登陆,简单记录一下:app 端实现一…

【HW系列】战后收尾(2):复盘提升

本章为该系列的第18篇,也是事后收尾阶段的第2篇。有些防守单位会以演习结束作为整个防守项目的结束,甚至会专门定制倒计时大屏,当时钟走到0秒的那一刻,所有人欢呼雀跃,组织庆功宴,和庆祝春节有一拼了,朋友圈里都开始有了年味。 但是,演练真的结束了吗?能与国家顶级攻击…

个人工作述职报告模板PPT转正述职报告通用工作总结汇报范文免费

不知道怎么写述职报告的同学,可以下载PPT模板,改一改就能用。模板文件一共有几个G,下载可能比较慢,建议选择转存,几秒就能保存全部文件,而且几乎不消耗数据流量。不需要开会员,文件可以免费保存,建议一次选择一个文件夹转存。手机APP保存的文件,可以同步在电脑端查看。…

【HW系列】事中迎战(5):作文大赛

本章为该系列的第15篇,也是事中迎战的第5篇。工作日报、技战法、布防报告、事件处置报告、协同联动报告、总结报告、应急响应报告……各种报告也算是演习工作中的一大特色了,曾经请教过一位资深业内人士,后续的演练有没有可能取消各种报告任务,他的回答是:“不太可能,毕竟…