首页 > 其他分享 >使用bom统一管理maven项目中的依赖版本

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

时间:2024-07-28 16:39:49浏览次数:17  
标签:依赖 spring maven pom bom 版本

背景

最近在做一个文件导入的功能时,领导觉得这个功能可以作为一个通用的组件给其他项目使用,让我将这个模块封装成一个组件上传到私服。
在进行过程中,我发现了问题:在我的模块中是要使用到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>

标签:依赖,spring,maven,pom,bom,版本
From: https://www.cnblogs.com/wangmengmengm/p/18328405

相关文章

  • Adobe Photoshop (PS)软件下载(含全版本安装包)
    一、AdobePhotoshop简介AdobePhotoshop(简称PS)是由AdobeSystems公司开发的图像处理软件,它是一款集图像扫描、编辑修改、图像制作、广告创意、图像输入与输出于一体的图形图像处理软件。广泛应用于专业测评、平面设计、广告摄影、影像创意、网页制作、后期修饰、视觉创意、......
  • Django提示mysql版本过低:django.db.utils.NotSupportedError: MySQL 8 or later is re
    这个提示只是Django的版本检测提示,把它注释掉就好了。全局搜索函数:check_database_version_supported() 文件路径是:django_project\dj01\venv\Lib\site-packages\django\db\backends\base\base.py找到第二个,就是就是使用的那个,把它注释了: definit_connection_sta......
  • jin版本
    VersionInformationGetVersionjintGetVersion(JNIEnv*env);Returnstheversionofthenativemethodinterface.ForJavaSEPlatform21andlater,itreturnsJNI_VERSION_21.ThefollowingtablegivestheversionofJNIincludedineachreleaseoftheJav......
  • 如何将Python版本从3.9降级到3.7?
    我正在开发RaspberryPi。这些是我的操作系统信息:pi@raspberrypi:~$uname-marmv7lpi@raspberrypi:~$cat/etc/os-releasePRETTY_NAME="RaspbianGNU/Linux11(bullseye)"NAME="RaspbianGNU/Linux"VERSION_ID="11"VERSION="11(bullseye)......
  • javac 提示类文件具有错误的版本 62.0,应为 52.0
    您遇到的错误提示"类文件具有错误的版本61.0,应为52.0"表示您正在尝试运行一个使用较新版本的Java编译的类文件,而您的Java运行环境(JRE)版本较旧。具体来说:版本61.0对应于Java17。版本52.0对应于Java8。因此,您需要使用Java17或更高版本的JDK来编译和运行该......
  • Visual Studio版本号、MSVC版本、工具集版本号
    IDE              发布时间   工具集版本   MSC_VER      MSVC++          系统支持       使用频率VisualC++6.0       1998       V60       1200......
  • Windows系统更新R版本及Rstudio
    由于一些包对R的版本的要求比较高,所以有时候我们不得不更新R的版本。但是呢,更新了R版本后,另外有些包的版本又不兼容,唉,更新R包的版本又很费时,所以一般能不更新就不更新吧。下面介绍一下常见的更新R的方法吧。一、更新R版本(1)在RGui或Rstudio中使用以下代码(推荐RGui) #install......
  • Python 与 Visual Studio Professional 2022(64 位)- 预览版本 5.0 交互窗口挂起
    我正在MicrosoftVisualStudioProfessional2022(64位)-预览版17.11.0预览版5.0上运行Python开发工作负载。我正在关注VisualStudio中的Python教程https://learn.microsoft.com/en-us/visualstudio/python/tutorial-working-with-python-in-visual-studio-st......
  • 无法连接到127.0.0.1:53233的chrome,此版本的ChromeDriver仅支持Chrome版本114。当前浏
    drivercode:fromselenium.webdriver.common.byimportByfromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasecimportundetected_chrom......
  • 虚拟环境的jupter notebook 版本升级问题
     1、进入虚拟环境,且查看资源列表 2、升级为7.0版本pipinstall--upgradenotebook==7.0.0 ...... 3、查看notebook版本pipshownotebook 4、重启jupternotebook(虚拟环境下的)如果出现闪退可以卸载:pipuninstallnotebook然后重新安装新的版本或回退到原来......