首页/新闻资讯/正文详情

Apache DolphinScheduler 依赖版本统一管理:深入解析 dolphinscheduler-bom 模块

发布时间:2026/9/24 14:13:53 来源:云帆数科 栏目:资讯中心
Apache DolphinScheduler 依赖版本统一管理:深入解析 dolphinscheduler-bom 模块
任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载dolphinscheduler-bom是 Apache DolphinScheduler 仓库中专用于统一管理第三方依赖版本的 Maven BOMBill of Materials模块。本文以 dolphinscheduler-bom/README.md 为主线结合该模块的 pom.xml 及仓库内多个子模块的实际使用方式完整讲解 BOM 的导入方法、版本覆盖机制、依赖族构成、Profile 切换与排除设计帮助你理解并复用 DolphinScheduler 的这套依赖治理方案。什么是 BOMDolphinScheduler 为什么需要它在 Maven 多模块工程中一个常见痛点是每个模块都各自声明依赖版本导致版本号分散、难以统一升级还容易因传递依赖冲突产生运行时问题。BOMBill of Materials是一种packaging为pom的特殊构件它只负责在dependencyManagement中集中声明一批依赖及其版本本身不产出任何可执行内容供其他工程以import方式引入。在 DolphinScheduler 的仓库结构中根 pom.xml 在dependencyManagement中管理着仓库内部各模块如dolphinscheduler-master、dolphinscheduler-worker、dolphinscheduler-api等的版本而 dolphinscheduler-bom/pom.xml 则专门负责第三方依赖的版本治理。二者分工明确根pom.xml定义内部模块间依赖与构建插件、公共测试依赖dolphinscheduler-bom集中管理 Netty、Spring Boot、MyBatis-Plus、Quartz、Jackson、Hadoop、Spark 等第三方库版本并嵌套导入多个官方 BOM。从源码看dolphinscheduler-bom自身的坐标定义在 dolphinscheduler-bom/pom.xml#L20-L28其父工程是org.apache.dolphinscheduler:dolphinscheduler当前版本为dev-SNAPSHOTpackaging为pom即纯版本管理模块。在自己的项目中导入 dolphinscheduler-bom原 README 给出了标准的导入方式当你希望在自己的工程里使用任意dolphinscheduler-xx模块同时又不想手工维护其传递依赖的版本时可以在dependencyManagement中按如下方式导入dependencyManagement dependencies dependency groupIdorg.apache.dolphinscheduler/groupId artifactIddolphinscheduler-bom/artifactId version${dolphinscheduler.version}/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement关键点说明typepom/type告诉 Maven 这是一个 BOM 构件而非普通 JARscopeimport/scope将 BOM 中dependencyManagement的声明合并进当前工程的依赖管理中此后声明被管理的依赖时无需再写版本号${dolphinscheduler.version}应替换为你实际使用的 DolphinScheduler 发布版本。导入之后你的工程即可直接声明dolphinscheduler-common、dolphinscheduler-task-api等模块及其第三方依赖而不带版本。仓库内部正是这样实践的——例如 dolphinscheduler-common/pom.xml#L31-L41 和 dolphinscheduler-dao/pom.xml#L29-L39 都在各自的dependencyManagement中以import方式引入dolphinscheduler-bom随后在dependencies中直接使用无版本号的依赖声明如commons-io、httpclient、guava、mybatis-plus等。覆盖 BOM 中定义的版本原 README 明确说明如果你希望对 BOM 中某个依赖的版本进行覆盖可以直接在当前模块自己的dependencyManagement中为该依赖显式声明版本。Maven 遵循就近优先原则——当前 POM或当前模块的父 POM中显式声明的版本优先级高于通过import引入的 BOM。例如BOM 默认将guava版本锁定为31.1-jre见 dolphinscheduler-bom/pom.xml#L546-L550如果你的项目因安全或功能需要改用其他版本可在自己的dependencyManagement中补充dependencyManagement dependencies !-- 导入 BOM -- dependency groupIdorg.apache.dolphinscheduler/groupId artifactIddolphinscheduler-bom/artifactId version${dolphinscheduler.version}/version typepom/type scopeimport/scope /dependency !-- 覆盖 BOM 中 guava 的版本 -- dependency groupIdcom.google.guava/groupId artifactIdguava/artifactId version32.0.0-jre/version /dependency /dependencies /dependencyManagement需要留意的是覆盖版本属于局部特化会脱离 DolphinScheduler 官方验证过的依赖组合建议仅在确有需求如修复 CVE、适配内部组件时使用并自行做好兼容性回归验证。BOM 的核心依赖族与版本清单dolphinscheduler-bom/pom.xml 通过properties集中声明版本再在dependencyManagement中引用这些属性实现一处定义、全局生效。当前仓库dev-SNAPSHOT中几个核心依赖族及版本如下依赖族代表构件版本属性当前值Nettynetty-bom/netty-allnetty.version4.1.53.FinalSpring Bootspring-boot-starter-parentspring-boot.version2.7.3MyBatis-Plusmybatis-plus-boot-starter等mybatis-plus.version3.5.2Quartzquartzquartz.version2.3.2连接池druiddruid.version1.2.20Jacksonjackson-core/databind/annotations/jsr310jackson.version2.13.4日志slf4j-api、logback-classic/coreslf4j.version/logback.version1.7.36 / 1.2.11Hadoophadoop-common/client/hdfs/yarnhadoop.version3.2.4Sparkspark-core/sql/hive_2.12spark.version3.2.2HTTP 客户端httpclient/httpcore/okhttphttpclient.version等4.5.13 / 4.4.15 / 4.9.3Guavaguavaguava.version31.1-jre云厂商 SDKAWS、阿里云 OSS、Azure、华为云 OBS、GCS各自属性见 pom完整的属性定义位于 dolphinscheduler-bom/pom.xml#L30-L127覆盖范围还包括ZooKeeper/Curator、etcdjetcd、gRPC、Protostuff、POI、Hive JDBC、Kyuubi JDBC、多种数据库驱动MySQL、Oracle、PostgreSQL、SQL Server、Presto/Trino、ClickHouse、Snowflake、Redshift、达梦、Vertica、HANA 等、Testcontainers、Fabric8 Kubernetes Client、Casdoor 等与 DolphinScheduler 的调度、数据源插件、任务插件、告警、存储等模块的技术栈一一对应。嵌套导入官方 BOM 的分层设计dolphinscheduler-bom并未为所有依赖手写版本而是对生态成熟的框架直接嵌套导入其官方 BOM避免重复造轮子。从 dolphinscheduler-bom/pom.xml 可以看到以下scopeimport/scope的 BOM 依赖io.netty:netty-bom版本 4.1.53.Final见 pom.xml#L143-L150org.springframework.boot:spring-boot-starter-parent版本 2.7.3见 pom.xml#L157-L164Spring 生态各依赖版本由它统一接管io.grpc:grpc-bom版本 1.41.0见 pom.xml#L293-L299用于 gRPC 通信及 etcd 客户端com.azure:azure-sdk-bom版本 1.2.10见 pom.xml#L721-L727统一 Azure 系列 SDKorg.springframework.cloud:spring-cloud-dependencies版本 2021.0.3见 pom.xml#L741-L747。这种官方 BOM 自定义版本属性的分层结构既保证了与上游框架版本对齐又让 DolphinScheduler 特有的依赖如 DolphinScheduler 自身模块、插件体系有独立的版本入口。值得注意的是根 pom.xml#L66 中定义的spring.boot.version为 2.6.1而 BOM 将其覆盖为 2.7.3这正是 BOM 在子模块层级生效、优先级更高的体现。传递依赖的排除与安全治理第三方依赖往往自带大量传递依赖直接使用会产生冲突甚至安全风险。dolphinscheduler-bom在声明依赖时做了大量exclusions处理这也是它作为版本治理中枢的重要职责。典型例子ZooKeeper排除slf4j-log4j12避免日志实现冲突、io.netty:netty避免与新版 Netty 冲突、spotbugs-annotations见 pom.xml#L212-L231cron-utils排除javassist见 pom.xml#L194-L204hadoop-common排除slf4j-log4j12、jersey-json、junit、servlet-api、slf4j-reload4j等见 pom.xml#L478-L505spark-hive_2.12排除commons-httpclient、httpclient及旧版 Jacksonjackson-core-asl、jackson-mapper-asl见 pom.xml#L813-L835。在安全治理方面代码注释明确说明了两个 CVE 相关决策见 pom.xml#L527-L538htrace-core4的 scope 被设为provided使其不会随 hadoop-* 传递依赖进入产物用org.apache.hbase.thirdparty:hbase-noop-htrace版本4.1.1替换htrace-core以规避已知 CVE。此外BOM 还通过scope将大量仅用于测试或运行期外部的依赖做了限定例如数据库驱动mysql-connector-java、ojdbc8、ngdbc、redshift-jdbc42等多声明为testscope见 pom.xml#L392-L429Testcontainers 系列testcontainers、mysql、postgresql、minio统一为test见 pom.xml#L944-L971system-lambda也仅用于测试。这种 scope 治理能显著减小最终发行包的体积并降低运行时依赖面。通过 Maven Profile 切换 ZooKeeper 版本BOM 文件末尾定义了两个互斥的 Maven Profile用于切换 ZooKeeper 及其客户端 Curator 的版本组合见 pom.xml#L992-L1014zk-3.8默认激活activeByDefaulttruezookeeper.version为3.8.0curator.version为5.3.0zk-3.4通过-Dzk-3.4属性激活zookeeper.version为3.4.14curator.version为4.3.0。这两个属性在 BOM 的dependencyManagement中被zookeeper与curator-*系列构件引用见 pom.xml#L212-L279。该设计服务于不同 ZooKeeper 集群环境的兼容性需求当你的注册中心运行在 ZooKeeper 3.4 等旧版本上时可以显式启用zk-3.4Profile 构建让整个依赖树切换到对应版本的客户端。这一机制的实际消费方是 dolphinscheduler-registry-zookeeper 模块——它通过importBOM 后直接声明zookeeper、curator-framework、curator-client、curator-recipes、curator-test等无版本依赖见该模块 pom.xml#L60-L93由 BOM 统一决定具体版本。如何验证 BOM 是否生效导入 BOM 后可用以下命令验证依赖版本解析结果假设在仓库根目录执行# 查看某模块依赖树确认 guava 等依赖版本来自 BOM ./mvnw dependency:tree -pl dolphinscheduler-common # 查看被管理的依赖及其版本 ./mvnw help:effective-pom -pl dolphinscheduler-commondependency:tree会输出每个依赖的最终解析版本若版本与 BOM 定义不一致多半是某个模块在自己的dependencyManagement或dependencies中显式覆盖了版本可结合help:effective-pom生成的有效 POM核对最终的版本裁决结果。实践要点小结围绕 dolphinscheduler-bom/README.md 及其实现可以总结出以下可直接迁移到自身工程的实践要点统一入口用独立的 BOM 模块集中管理第三方依赖版本业务模块一律无版本声明升级只需改 BOM 一处分层嵌套生态成熟的框架直接导入官方 BOM自有或定制依赖才手写版本降低维护成本覆盖有度允许下游按就近优先覆盖版本但应作为特例并做回归验证主动排雷在 BOM 层统一处理日志实现冲突、旧版 Jackson 等历史包袱并对 CVE 依赖做替换或 scope 收窄环境适配用 Profile 表达对不同基础组件版本如 ZooKeeper 3.8 / 3.4的兼容组合构建期按需切换。若你正在为 DolphinScheduler 开发自定义数据源、任务或告警插件按本文方式导入dolphinscheduler-bom即可与官方模块共享同一套经过验证的依赖版本基线省去手工对齐版本号的繁琐工作。赞分享任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载相关推荐Apache DolphinScheduler 的 Maven BOM 依赖版本治理dolphinscheduler-bom 模块深度解析Apache DolphinScheduler 的 Maven BOM 依赖版本治理dolphinscheduler bom 模块深度解析 本篇技术指南围绕任务调度数据编排工作流自动化后端大数据Apache DolphinScheduler BOM 解析统一管理第三方依赖版本的正确姿势Apache DolphinScheduler BOM 解析统一管理第三方依赖版本的正确姿势 dolphinscheduler bom 是 Apache Do任务调度数据编排工作流自动化后端大数据Apache DolphinScheduler第三方依赖管理Maven POM文件与版本控制Apache DolphinScheduler第三方依赖管理Maven POM文件与版本控制 在分布式系统开发中第三方依赖管理直接影响项目的稳定性和可维护性任务调度大数据后端微服务上一篇Consola交互式提示完整教程文本、确认、选择和多项选择下一篇Agents-Course项目中的图像资源问题分析与处理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

shadcn-vue Badge 组件完全指南:安装、变体与源码级定制
shadcn-vue Badge 组件完全指南:安装、变体与源码级定制

UI组件前端 【免费下载链接】shadcn-vue Vue port of shadcn-ui 项目地址: https://gitcode.com/gh_mirrors/sh/shadcn-vue 点击查看 免费下载 本篇技术指南以 shadcn-vue 官方文档的 Badge 组件页面为骨架,结合仓库中的真实注册表源码与示例&#xff0… · 2026/9/24 14:13:47

KuGouMusicApi库模式指南:不启动HTTP服务,编程式调用酷狗音乐API的正确姿势
KuGouMusicApi库模式指南:不启动HTTP服务,编程式调用酷狗音乐API的正确姿势

KuGouMusicApi库模式指南:不启动HTTP服务,编程式调用酷狗音乐API的正确姿势 【免费下载链接】KuGouMusicApi 酷狗音乐 Node.js API service 项目地址: https://gitcode.com/gh_mirrors/ku/KuGouMusicApi KuGouMusicApi 是一款基于 Node.js 的酷狗… · 2026/9/24 14:13:35

大泽湖海归小镇,从一场论坛到一座“留人”的城
大泽湖海归小镇,从一场论坛到一座“留人”的城

作者 | 辰纹来源 | 洞见新研社今天,2026海创论坛及海归论坛在长沙望城收官。300余位嘉宾、15个优质海归创业项目、一批重大项目集中签约,这是论坛的“面子”,而真正值得关注的,是论坛的“里子”,散场之后,那… · 2026/9/24 14:13:29

Jackett终极指南:3步实现种子搜索自动化,告别手动切换站点的烦恼
Jackett终极指南:3步实现种子搜索自动化,告别手动切换站点的烦恼

Jackett终极指南:3步实现种子搜索自动化,告别手动切换站点的烦恼 Jackett是一款强大的开源代理服务器,专为统一管理各类种子搜索站点而设计。作为媒体自动化生态系统的关键组件,它能够将全球700多个公共、半私有和私有种子站点的… · 2026/9/24 15:20:40

RuoYi-Vue Pro 架构解析:单体还是微服务选型指南
RuoYi-Vue Pro 架构解析:单体还是微服务选型指南

RuoYi-Vue Pro 架构解析:单体还是微服务选型指南 【免费下载链接】ruoyi-vue-pro 🔥 官方推荐 🔥 RuoYi-Vue 全新 Pro 版本,优化重构所有功能。基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管理系统 微信小程序… · 2026/9/24 15:20:34

腾讯开源AI共享平台:统一管理多模型API,实现家庭与团队按量计费
腾讯开源AI共享平台:统一管理多模型API,实现家庭与团队按量计费

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 15:20:34

OOTDiffusion 虚拟试穿快速上手指南:从两张图到一张试穿效果的完整教程
OOTDiffusion 虚拟试穿快速上手指南:从两张图到一张试穿效果的完整教程

OOTDiffusion 虚拟试穿快速上手指南:从两张图到一张试穿效果的完整教程 【免费下载链接】OOTDiffusion [AAAI 2025] Official implementation of "OOTDiffusion: Outfitting Fusion based Latent Diffusion for Controllable Virtual Try-on" 项目地址:… · 2026/9/24 15:20:34

OpenSCAD 内置 HIDAPI 库解析:SpaceMouse 3D 输入设备的底层接入实现
OpenSCAD 内置 HIDAPI 库解析:SpaceMouse 3D 输入设备的底层接入实现

图形学3D建模桌面应用 【免费下载链接】openscad OpenSCAD - The Programmers Solid 3D CAD Modeller 项目地址: https://gitcode.com/gh_mirrors/op/openscad 点击查看 免费下载 本篇文章围绕 OpenSCAD 仓库内置的 hidapi 第三方库(版本 0.11.2&#… · 2026/9/24 15:20:34

STM32嵌入式C++11实战:突破资源限制与实时性瓶颈
STM32嵌入式C++11实战:突破资源限制与实时性瓶颈

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 15:20:27

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码