# Maven Bom 的使用

Maven Bom 的使用

文章目录

  • Maven Bom 的使用
    • 概述
    • BOM特点
      • 优点
      • 缺点
    • Maven
      • Maven 安装
        • 安装步骤
        • settingx.ml常用仓库地址
        • Idea 使用maven常见坑
    • SpringBoot 项目Bom使用案例
      • 项目结构
      • 主项目 zerocode-back-serve
      • zc-dependency(第三方jar管理)
      • 子模块zc-serve
      • 子模块zc-database-model
    • 遇到的问题
      • 完整代码

概述

  • Maven BOM是一个概念,它用于管理项目依赖的版本。BOM 本身是一个特殊类型的 POM(Project Object Model)文件,它包含了一个或多个依赖项的版本信息,但不包含实际的依赖项。
  • Maven 项目中,通常会有多个依赖项,这些依赖项可能有不同的版本,而且它们之间可能还有依赖关系。为了避免版本冲突和手动管理每个依赖项的版本,可以使用 BOM 来统一管理这些依赖项的版本。
  • BOM 文件通常由框架或库的开发者提供,它包含了该框架或库所有依赖项的版本信息。在项目中使用 BOM 时,只需要在依赖项中声明需要使用的依赖项,而不需要声明版本号,Maven 会自动根据 BOM 文件中的版本信息来解析依赖项的版本

BOM特点

优点

  1. 版本管理:BOM 允许您在一个地方集中定义所有相关依赖库的版本号,确保项目中使用的所有库具有一致的版本。

  2. 简化依赖管理:通过使用 BOM,您可以简化项目的依赖管理,减少重复和混乱。

  3. 减少冲突:BOM 可以帮助减少依赖库之间的版本冲突,因为所有依赖都使用相同的版本。

缺点

  1. 限制灵活性:BOM 可能限制您在项目中使用不同版本的依赖库,因为所有依赖都将受到 BOM 中定义的版本的约束。
  2. 增加复杂性:在某些情况下,BOM 可能会增加项目的复杂性,特别是在处理特定依赖的特定版本时。
  3. 需要额外配置:为了使用 BOM,您需要在项目中配置相应的依赖和插件,这可能需要一些额外的工作。

Maven

Maven 安装

安装步骤
  • 下载maven配置环境变量,即可使用
settingx.ml常用仓库地址
  • 阿里云仓库

    <mirrors><mirror>         <id>alimaven</id><name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> 
    </mirrors>
    
Idea 使用maven常见坑
  • Idea右侧Profiles下面的每个maven项目报红,因为项目无法识别到当前的maven项目,右键unlink maven projects,点击加号重新添加项目。
  • 编译的时候如果class文件中已经存在了,但是Idea报找不到类并且报红,可以尝试上面的方法。或者清理Idea的缓存重启。
  • 当仓库中的jar包问题混乱时候,可以重新指定maven的地址,重新拉去jar包。
    在这里插入图片描述

SpringBoot 项目Bom使用案例

项目结构

  • 项目结构如图所示

在这里插入图片描述

主项目 zerocode-back-serve

  • 通过<modules>指定主模块下面的子模块,通过dependencyManagement引入所有的依赖管理器,在子模块中只需要写上需要用的依赖就可以

  • pom.xml

<?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.lidong.zc</groupId><artifactId>zerocode-back-serve</artifactId><packaging>pom</packaging><version>${zerocode-back-serve-revision}</version><!-- 模块 --><modules><module>zc-serve</module><module>zc-database-model</module></modules><!-- 全局的版本指定 --><properties><!-- springboot 版本指定 --><springboot-version>3.0.0</springboot-version><!-- zc 后端服务的版本 --><zerocode-back-serve-revision>0.0.1-SNAPSHOT</zerocode-back-serve-revision><!-- zc dependency 的版本 --><zc-dependency>0.0.1-SNAPSHOT</zc-dependency></properties><dependencyManagement><dependencies><!-- 依赖 zc-dependency --><dependency><groupId>com.lidong.zc</groupId><artifactId>zc-dependency</artifactId><version>${zc-dependency}</version><type>pom</type><scope>import</scope></dependency><!-- springboot dependecy --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${springboot-version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>

zc-dependency(第三方jar管理)

  • 所有第三方jar的版本在这个模块指定,其它模块只需要引入需要的依赖即可

  • pom.xml

<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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lidong.zc</groupId><artifactId>zc-dependency</artifactId><name>zc-dependency</name><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><description>jar包统一管理</description><properties><java.version>1.8</java.version><!-- 指定 jdk 版本--><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><mybatis.version>2.1.0</mybatis.version><druid-version>1.2.11</druid-version></properties><dependencyManagement><dependencies><!-- mybatis 依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency><!-- duruid 依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid-version}</version></dependency></dependencies></dependencyManagement></project>

子模块zc-serve

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.lidong.zc</groupId><artifactId>zerocode-back-serve</artifactId><version>${zerocode-back-serve-revision}</version></parent><artifactId>zc-serve</artifactId><version>0.0.1-SNAPSHOT</version><name>zc-serve</name><description>zc-serve</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency></dependencies></project>

子模块zc-database-model

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.lidong.zc</groupId><artifactId>zerocode-back-serve</artifactId><version>${zerocode-back-serve-revision}</version></parent><artifactId>zc-database-model</artifactId><version>0.0.1-SNAPSHOT</version><name>zc-database-model</name><description>zc-database-model</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency></dependencies></project>

遇到的问题

1、子模块中Parent模块的版本不一致报错: https://bbs.csdn.net/topics/618266039

完整代码

  • https://gitee.com/Marlon_Brando/zerocode-back-serve

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

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

相关文章

手机运营商二要素检测:重塑信任基石,筑牢信息安全屏障

随着移动互联网的普及和数字经济的快速发展&#xff0c;用户信息安全的重要性日益凸显。运营商二要素检测作为一种强大的安全验证机制&#xff0c;以其精准匹配与实时验证的特性&#xff0c;为各类应用场景提供了一种可靠的身份识别解决方案&#xff0c;正在成为众多企业和服务…

PyTorch 深度学习(GPT 重译)(六)

十四、端到端结节分析&#xff0c;以及接下来的步骤 本章内容包括 连接分割和分类模型 为新任务微调网络 将直方图和其他指标类型添加到 TensorBoard 从过拟合到泛化 在过去的几章中&#xff0c;我们已经构建了许多对我们的项目至关重要的系统。我们开始加载数据&#xf…

11种创造型设计模式(下)

观察者模式 我们可以比喻观察者模式是一种类似广播的设计模式 介绍 观察者模式&#xff1a;对象之间多对一依赖的一种设计方案&#xff0c;被依赖的对象是Subject&#xff0c;依赖的对象是Observer&#xff0c;Subject通知Observer变化。 代码 说明&#xff1a; WeatherStat…

【百度灵境矩阵实训营】操作指南

【百度灵境矩阵实训营】操作指南 写在最前面提交注意事项比赛参与指南1、创建智能体作品要求 2、提交作品 学习资料包 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&…

Docker容器化技术(docker-compose示例:部署discuz论坛和wordpress博客,使用adminer管理数据库)

安装docker-compose [rootservice ~]# systemctl stop firewalld [rootservice ~]# setenforce 0 [rootservice ~]# systemctl start docker[rootservice ~]# wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64创建目录 [rootse…

用纯C语言实现空气压强和电压关系

已知P是真空度&#xff0c;U是电压&#xff0c;C是3.572&#xff08;以PA为单位&#xff09;&#xff0c;P10**(U-C)/1.286 1、使用 math.h 头文件中提供的函数&#xff0c;比如 pow() 来计算幂 #include <stdio.h> #include <math.h>int main() {double U; // 电…

接口测试、postman、测试点提取【主】

接口测试是测试系统组件间接口的一种测试 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点 测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系 文章目录 HTTP接口 & Web Service接口RESTful接口…

SQLiteC/C++接口详细介绍sqlite3_stmt类(五)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;四&#xff09;- 下一篇&#xff1a; 无 12. sqlite3_bind_text16函数 sqlite3_bind_text16函数用于将UTF-16编码的文本数据&#xff08;字符串&#xff09;绑定…

语音识别教程:Whisper

语音识别教程&#xff1a;Whisper 一、前言 最近看国外教学视频的需求&#xff0c;有些不是很适应&#xff0c;找了找AI字幕效果也不是很好&#xff0c;遂打算基于Whisper和GPT做一个AI字幕给自己。 二、具体步骤 1、安装FFmpeg Windows: 进入 https://github.com/BtbN/FF…

[嵌入式系统-43]:SOC芯片内部的总线规范

目录 一、SOC&#xff08;System on Chip&#xff09; 二、AMBA 2.1 AMBA概述 2.2 AMBA架构 三、AXI 2.1 AXI概述 一、SOC&#xff08;System on Chip&#xff09; SOC&#xff08;System on Chip&#xff09;通常包含多个功能模块&#xff0c;如处理器核心、内存控制器…

综合知识篇16-信息系统基础知识考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例…

基于SpringBoot和Vue的网上订餐系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的网上订餐系统的设计与实现。 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&#x…

nginx介绍及搭建

架构模型 Nginx是由一个master管理进程、多个worker进程组成的多进程模型。master负责管理worker进程&#xff0c;worker进程负责处理网络事件&#xff0c;整个框架被设计为一种依赖事件驱动、异步、非阻塞的模式。 优势&#xff1a; 1、充分利用多核&#xff0c;增强并发处理…

[隐私计算实训营学习笔记] 第1讲 数据要素流通

信任四基石 数据的分级分类 技术信任&#xff1a;全链路审计、闭环完成的数据可信流通体系 技术信任&#xff1a;开启数据密态时代 数据可流通的基础设施&#xff1a;密态天空计算

LeetCode 面试经典150题 罗马数字转整数

题目&#xff1a; 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …

ZnO非线性电阻片功率损耗的频率特性

对不同频率正弦交流电压作用下直流氧化锌阀片的功率损耗进行了测量。图3.16(a)和(b)分别为试品类型A和试品类型B两种直流ZnO阀片在不同频率电压作用下的功率损耗随荷电率变化的特性。两种阀片的功率损耗都随频率和荷电率的增加而增加。当频率达到1kHz或以上时,阀片的功率损耗增…

Django项目不显示图片,路径找不到

1.问题 创建Django项目简单写一个网页&#xff0c;文字能显示&#xff0c;图片却无法加载&#xff0c;路径错误&#xff0c;找不到图片。 2.背景 我的项目结构 C:. ├─.idea │ └─inspectionProfiles ├─app01 │ ├─migrations │ ├─templates │ │ ├─app0…

JVM垃圾收集器你会选择吗?

目录 一、Serial收集器 二、ParNew收集器 三、Paralle Scavenge 四、Serial Old 五、Parallel Old 六、CMS收集器 6.1 CMS对处理器资源非常敏感 6.2 CMS容易出现浮动垃圾 6.3 产生内存碎片 七、G1 收集器 八、如何选择合适的垃圾收集器 JVM 垃圾收集器是Java虚…

玩转C语言——C语言中内存存储

一、 整数在内存中的存储 我们知道&#xff1a;整数的2进制表⽰⽅法有三种&#xff0c;即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&#xff0c;⽤1表⽰“负”&#xff0c;⽽数值位最 ⾼位的⼀位是被当做符号位&#xff0c;…

【Java】使用 Java 语言实现一个冒泡排序

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章。 这是《Java》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识…