返回顶部
首页 > 资讯 > 精选 >Java如何使用Maven BOM统一管理版本号
  • 610
分享到

Java如何使用Maven BOM统一管理版本号

2023-06-14 14:06:23 610人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Java如何使用Maven BOM统一管理版本号,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、WEB应用程序

这篇文章将为大家详细讲解有关Java如何使用Maven BOM统一管理版本号,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Java是什么

Java是一门面向对象编程语言,可以编写桌面应用程序、WEB应用程序、分布式系统和嵌入式系统应用程序。

一个中大型的 Java 项目往往包含若干 jar 包,这些 JAR 包有着不同的版本号。如果这些 JAR 包单独发布,然后直接通过版本号引用相应的 JAR 包,不同版本的兼容性维护将变得十分麻烦。为了解决这个问题,可以让一个特殊的模块引用这些 JAR 包,将版本号定义在这个模块中,模块中的 JAR 都是兼容的,对外发布时只发布这个特殊模块。这个特殊模块就是 BOM(Bill Of Materials)。

著名的 Spring Boot 就使用了这种方式来管理版本号,这个模块就是 spring-boot-dependencies,用户在使用 Spring Boot Starter 相关依赖时引入特定版本的 spring-boot-dependencies,然后在引入其它依赖时只需要声明 group 和 name 即可,不需要再指定版本号了。当然,在 Gradle 中使用 Spring Boot 插件,或者在 Maven 中使用 spring-boot-starter-parent 作为父模块也能够达到类似的效果。

1. BOM 介绍

BOM (Bill Of Material) 是 Maven 仓库中的一个概念,它本质也是一个可被引用的包,但不包含代码,只是声明了一系列其它包。例如:Maven 中央仓库中的 spring-boot-dependencies](https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.4.4/) 包。它只有一个 .pom 文件。

下面是 Maven 官网上的一个简单的 BOM 的 .pom 文件:

<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</groupId>  <artifactId>bom</artifactId>  <version>1.0.0</version>  <packaging>pom</packaging>  <properties>    <project1Version>1.0.0</project1Version>    <project2Version>1.0.0</project2Version>  </properties>   <dependencyManagement>    <dependencies>      <dependency>        <groupId>com.test</groupId>        <artifactId>project1</artifactId>        <version>${project1Version}</version>      </dependency>      <dependency>        <groupId>com.test</groupId>        <artifactId>project2</artifactId>        <version>${project2Version}</version>      </dependency>    </dependencies>  </dependencyManagement>   <modules>    <module>parent</module>  </modules></project>

这个文件声明了两个包(project1 和 project2)及其版本号,和一般 .pom 文件中的声明不同的是, 节点外面还包含了一层 节点。以上就是 BOM 包中最核心的文件的基本结构了;基于 Gradle 发布 BOM 包的本质就是生成这样的一个文件。

2. 使用 Gradle 制作一个 BOM

这里我们假定要创建一个 BOM,用来统一管理三方 Java 包,其它业务模块通过引用这个 BOM 来间接引用需要使用的第三方 Java 包。工程完整代码:https://GitHub.com/Robothy/gradle-bom-example

2.1 创建 BOM 工程

Gradle 中的 BOM 工程需要使用 java-platfORM 插件,这样的工程是一个不包含源代码,只包含包声明的特殊的组件,也被称为平台(platform)。

build.gradle 部分代码

plugins {    id 'java-platform'}dependencies {    constraints {        // 声明一些三方包及其版本号        api "org.apache.kafka:kafka-clients:2.6.0"        api "redis.clients:jedis:3.5.2"    }}

上面代码中,三方包的声明没有放在 dependencies 中,而是放在了 constraints 里面。这表示如果使用了其中的包,优先使用 constraints 中声明的版本。

BOM 项目中声明包的方式有两种:

  • api 表示包在编译期可见。

  • runtime 表示包在运行期间可见。

2.2 BOM 的发布

BOM 的发布需要使用 maven-publish 插件,其发布配置如下:

publishing {    publications {        thirdPartPlatform(MavenPublication){            from components.javaPlatform            artifactId = "third-part-dependencies"        }    }    repositories {        mavenLocal()    }}

BOM 的命名一般以 -dependencies 结尾,这里我们取名为 third-part-dependnecies。

执行 ./gradlew.bat publish 就可以将 BOM 发布到本地的 Maven 仓库了。发布的 artifacts 包含两个主要文件(.pom 和 .module)和若干校验文件。其中 .pom 的文件内容为 Maven 官方定义的 BOM 的标准格式,而.module 文件内容是 Gradle 描述元数据的一种格式。

2.3 BOM 的使用

普通的 Java 应用或者 Java 库使用 BOM 的时候需要先添加 BOM 依赖,然后使用其它的库。例如:

// 引入 BOMimplementation platform("org.example:third-part-dependencies:1.0")// 引入包,这时不需要再指定版本号implementation "org.apache.kafka:kafka-clients"

当然,BOM 工程或者说 platform 工程也可以使用 BOM。

使用的时候需要在 dependencies 下面引入 BOM,然后在 constraints 下面声明要使用的库,声明的时候无须指定版本。另外,需要在 configurations 中调用 javaPlatform.allowDependencies(),否则会报错。

configurations{    javaPlatform.allowDependencies()}dependencies {    api platform("org.springframework.boot:spring-boot-dependencies:2.4.4")    constraints {        api "org.apache.kafka:kafka-clients:2.6.0"        api "Redis.clients:jedis:3.5.2"        api "org.springframework.batch:spring-batch-core"    }}

关于“Java如何使用Maven BOM统一管理版本号”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Java如何使用Maven BOM统一管理版本号

本文链接: https://lsjlt.com/news/271490.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java如何使用Maven BOM统一管理版本号
    这篇文章将为大家详细讲解有关Java如何使用Maven BOM统一管理版本号,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序...
    99+
    2023-06-14
  • Java使用Maven BOM统一管理版本号的实现
    一个中大型的 Java 项目往往包含若干 JAR 包,这些 JAR 包有着不同的版本号。如果这些 JAR 包单独发布,然后直接通过版本号引用相应的 JAR 包,不同版本的兼容性维护将...
    99+
    2024-04-02
  • IDEA配置Maven并版本统一管理的实现
    目录1.Maven安装2.Maven配置3.IDEA全局配置Maven4.Maven统一管理6.子模块依赖管理1.Maven安装 前往官网下载:https://maven.apach...
    99+
    2024-04-02
  • 如何使用NPM来管理Java的版本依赖?
    在Java的开发过程中,我们经常需要使用到各种各样的库和框架,这些依赖的版本管理是非常重要的一项工作。在Node.js的生态中,我们通常会使用NPM来管理依赖,那么,我们是否也可以使用NPM来管理Java的版本依赖呢?本文将会介绍如何使用...
    99+
    2023-09-23
    索引 npm leetcode
  • 【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析
    1. flatten-maven-plugin 介绍 1.1 环境 IntelliJ IDEA 2021.3JDK 1.8.0_301Apache Maven 3.8.1org.codehaus.mo...
    99+
    2023-09-05
    spring boot maven java
  • Springboot如何使用maven release插件执行版本管理及打包操作
    这篇文章主要为大家展示了“Springboot如何使用maven release插件执行版本管理及打包操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Springboot如何使用ma...
    99+
    2023-06-29
  • 如何使用nvm管理多版本node
    这篇文章将为大家详细讲解有关如何使用nvm管理多版本node,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先,使用下面的命令来安装 nvm$ curl&nbs...
    99+
    2024-04-02
  • Java如何实现学生管理系统控制台版本
    本篇内容介绍了“Java如何实现学生管理系统控制台版本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建学生类Student pu...
    99+
    2023-07-02
  • java中如何使用Flyway管理数据库的版本变更
    这篇文章给大家分享的是有关java中如何使用Flyway管理数据库的版本变更的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 前言随着项目的不断迭代,数据库表结构、数据都在发生着变化。甚至有的业务在多环境版本并...
    99+
    2023-06-16
  • 使用Swagger实现接口版本号管理方式
    目录Swagger实现接口版本号管理使用swagger测试接口Swagger实现接口版本号管理 前言:使用swagger暴露对外接口时原则是每个系统在不同的迭代版本仅仅需要暴露该迭代...
    99+
    2024-04-02
  • Java如何实现ATM银行管理系统控制台版本
    这篇文章主要讲解了“Java如何实现ATM银行管理系统控制台版本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java如何实现ATM银行管理系统控制台版本”吧!创建抽象类Card类abstr...
    99+
    2023-07-02
  • mac中如何使用NVM管理不同node版本
    这篇文章给大家分享的是有关mac中如何使用NVM管理不同node版本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Mac 下通过 brew install nvm 所安装的 nv...
    99+
    2024-04-02
  • node如何使用nvm进行node多版本管理
    这篇文章主要介绍了node如何使用nvm进行node多版本管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。nvm(nodejs versi...
    99+
    2024-04-02
  • 在Eclipse中如何使用版本管理工具SVN
    这篇文章主要为大家展示了“在Eclipse中如何使用版本管理工具SVN”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在Eclipse中如何使用版本管理工具SVN”这篇文章吧。1.SVN安装由于这...
    99+
    2023-05-30
    eclipse svn
  • 使用Maven如何对项目进行管理
    使用Maven如何对项目进行管理?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用 Maven 管理项目时,三层的开发时分模块开发的,parent-dao-se...
    99+
    2023-05-31
    maven mave
  • Unix系统中如何使用Shell脚本来管理Java负载?
    Unix系统中如何使用Shell脚本来管理Java负载? 在现代软件开发中,Java已经成为了一个非常流行的编程语言。Java应用程序的部署和管理是一个非常复杂的任务,特别是在大规模的生产环境中。在Unix系统中,Shell脚本是一个非常强...
    99+
    2023-08-03
    unix load shell
  • 一文读懂Python版本管理工具Pyenv使用
    目录pyenv简单介绍pyenv工作原理linux安装win10安装使用pyenv简单介绍 在日常运维中, 经常遇到这样的情况: 系统自带的Python是2.x,而业务部署需要Python 3.x 环境, 此时需要在...
    99+
    2022-06-02
    Python版本管理Pyenv使用 Python Pyenv使用
  • 如何使用nvm管理不同版本的node与npm
    这篇文章给大家分享的是有关如何使用nvm管理不同版本的node与npm的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:补充说明:Mac 下通过 brew install ...
    99+
    2024-04-02
  • Git的使用技巧:如何更好地管理版本?
    Git是一个非常流行的版本管理工具,它可以让开发者更好地管理代码版本。在这篇文章中,我们将会介绍一些Git的使用技巧,帮助你更好地管理版本。 使用分支 Git支持分支,这是一个非常有用的特性。通过使用分支,你可以在不影响主线代码的情况下...
    99+
    2023-10-15
    编程算法 javascript git
  • Java多个版本如何灵活切换和管理
    本篇内容主要讲解“Java多个版本如何灵活切换和管理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java多个版本如何灵活切换和管理”吧!sdkman 介绍SDKMAN 是一个用于在大多数基于 ...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作