当前位置: 首页 > news >正文

【Maven】特殊pom.xml配置文件 - BOM

特殊pom.xml配置文件 - BOM

仅用于集中管理项目依赖版本

在 Maven 中,BOM 用于定义一个项目的依赖版本的集合,通常用于管理一组共享的依赖版本。这意味着你可以将一组依赖版本集中管理,避免在每个项目中单独定义每个依赖的版本,从而确保多个模块之间的版本一致性。

一、例子

<?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>org.kaishu</groupId><artifactId>kaishu-dependencies</artifactId><version>${revision}</version><packaging>pom</packaging><properties><revision>2.0.0-snapshot</revision><java.version>1.8</java.version><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 只提供一个版本管理的基础,并不具体导入依赖。--><dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.8</version></dependency><!-- 其他依赖 --></dependencies></dependencyManagement>
</project>

二、注意事项

1.特殊的子pom.xml文件

在项目中BOM的位置与一般子POM一致,并且你依然可将其当做子POM通过< module >元素引入到父POM中,具体是否引入,主要取决于你是否需要通过父项目一键构建所有模块。但是BOM文件不可继承父POM,即BOM文件中不可声明< parent >元素,避免因继承结构导致循环依赖,即报错:import form a cycle。

父POM中加入BOM依赖示例如下:

<?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>org.kaishu</groupId><artifactId>springboot-labs</artifactId><version>${revision}</version><packaging>pom</packaging><modules><module>kaishu-dependencies</module></modules><properties><revision>2.0.0-snapshot</revision><java.version>1.8</java.version><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencyManagement><dependencies><dependency><groupId>org.kaishu</groupId><artifactId>kaishu-dependencies</artifactId><version>${revision}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>

2.dependencyManagement

dependencyManagement 元素只提供一个版本管理的基础,并不具体导入依赖。可查看maven依赖树发现kaishu-dependencies模块和父模块springboot-labs下是没有对应依赖的,而其他模块则有具体的依赖。
在这里插入图片描述
3.packaging标签

  • 对应值有pomjarwar
  • pom适用场景:
    • 父项目(用于管理子模块):如上述springboot-labs
    • 聚合器项目(只做模块聚合,不产生任何代码)
    • BOM 文件(管理依赖版本):如上述kaishu-dependencies
http://www.xdnf.cn/news/104095.html

相关文章:

  • vue2+Vant 定制主题
  • 拆解大模型“越狱”攻击:对抗样本如何撕开AI安全护栏?
  • 数据结构(四)-双向链表
  • C++入门基础(2)
  • 智能配送机器人控制系统设计
  • 边缘计算在工业自动化中的应用:开启智能制造新时代
  • 【ASR学习笔记】常见VAD模型识别语音活动的方式对比
  • Pthon流程控制
  • Ubuntu 环境下控制蓝牙适配器
  • 【CSS】层叠,优先级与继承(三):超详细继承知识点
  • 如何在编译命令中添加灰度标识
  • 局部最小实验--用最小成本确保方向正确
  • Python实现孔填充与坐标转换
  • 基于STM32、HAL库的MCP42010T数字电位器驱动程序设计
  • 机器学习算法-朴素贝叶斯(附带拉普拉斯平滑处理)
  • 【JAVA】读取windows的串口信息
  • SqlSugar与Entity Framework (EF)的SWOT分析
  • Inxpect 新推高性价比版毫米波安全雷达:以经济实用护航工业安全
  • 游戏开发核心技术解析——从引擎架构到攻防体系的完整技能树
  • 阿里云 AI 搜索开放平台:RAG智能化工作流助力 AI 搜索
  • 【C语言】C语言中的字符函数和字符串函数全解析
  • Pingora vs. Nginx vs. 其他主流代理服务器性能对比
  • 2024从Maven-MySQL-Nginx部署
  • LeetCode热题100--283.移动零--简单
  • Linux中进程的属性:状态
  • 3.4 Agent的生命周期管理:任务分解、状态管理与反馈机制
  • leetcode-排序
  • 迅为RK3562开发板ARM四核A53核心板多种系统适配全开源
  • C++学习-入门到精通-【0】计算机和C++简介
  • C++学习:六个月从基础到就业——C++学习之旅:STL迭代器系统