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

Exposed BOM(exposed-bom)使用指南:用物料清单统一管理 Kotlin SQL 框架的全部模块版本

发布时间:2026/9/25 15:46:02 来源:云帆数科 栏目:资讯中心
Exposed BOM(exposed-bom)使用指南:用物料清单统一管理 Kotlin SQL 框架的全部模块版本
ORM后端数据存储【免费下载链接】ExposedKotlin SQL Framework项目地址https://gitcode.com/gh_mirrors/ex/Exposed点击查看免费下载Exposed 是 JetBrains 出品的 Kotlin ORM/SQL 框架整个项目被拆分成 core、transport、DAO 与大量扩展模块。本文以仓库中的 exposed-bom/README.md 为骨架讲解如何通过Bill of MaterialsBOM物料清单在 Maven 与 Gradle 中一次性锁定所有 Exposed 模块的版本从而彻底告别每个依赖手写版本号、模块间版本不一致的维护痛点。读完本文你将能在自己的项目中用两种构建工具正确引入exposed-bom并理解它与仓库中另一条依赖管理路线exposed-version-catalog之间的异同与取舍。为什么 Exposed 需要一张 BOMExposed 是一个典型的多模块 Kotlin 项目。从仓库根目录的 settings.gradle.kts 可以看到它同时构建exposed-core、exposed-dao、exposed-jdbc、exposed-r2dbc、exposed-kotlin-datetime、exposed-crypt、exposed-json、exposed-migration-core、exposed-spring-boot-starter、spring-transaction等二十余个模块。这些模块属于同一个发布体系共享同一个版本号例如当前仓库中 BOM 文档与版本目录文档标注的版本均为1.5.0见 exposed-bom/README.md 与 exposed-version-catalog/README.md。这意味着如果你在项目中手动为exposed-core、exposed-dao、exposed-jdbc各自写版本号很容易出现混用不同版本导致的二进制兼容问题。BOM 的职责就是解决这一点它是一份只包含dependencyManagement版本声明的 POM 文件本身不携带任何代码只负责把所有 Exposed 模块的版本集中约束。从 CHANGELOG.md 可知Exposed 的 BOM 自0.32.1版本起正式提供Bill Of Materials (BOM) available并且后续还专门修复过发布流程中 BOM 模块缺失的问题fix: exposed-bom module missing when publishing足见它在官方模块分发体系中的正式地位。在 build.gradle.kts 中exposed-bom与exposed-version-catalog一起被列入apiValidation.ignoredProjects并且不应用 Kotlin JVM 插件——这正是因为它本质上是纯聚合 POM不含任何可被校验的 API 与源码。在 Maven 中使用 exposed-bom在 Maven 工程中BOM 的引入方式是在pom.xml的dependencyManagement中加入一条scopeimport、typepom的特殊依赖。完整配置如下版本号以当前仓库文档使用的1.5.0为例dependencyManagement dependencies dependency groupIdorg.jetbrains.exposed/groupId artifactIdexposed-bom/artifactId version1.5.0/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement dependencies dependency groupIdorg.jetbrains.exposed/groupId artifactIdexposed-core/artifactId /dependency dependency groupIdorg.jetbrains.exposed/groupId artifactIdexposed-dao/artifactId /dependency dependency groupIdorg.jetbrains.exposed/groupId artifactIdexposed-jdbc/artifactId /dependency /dependencies关键点拆解scopeimport/scope告知 Maven 这条依赖不是普通库而是要把exposed-bomPOM 中dependencyManagement声明的版本规则导入到当前工程的依赖管理中。typepom/type指明该依赖是 POM 类型的聚合文件。依赖声明省略version一旦导入 BOMexposed-core、exposed-dao、exposed-jdbc等所有 Exposed 模块的版本号都由 BOM 统一接管无需也不能再各自手写版本否则会与 BOM 约束冲突。Exposed 官方文档将 Maven Central 作为默认仓库Maven 默认启用中央仓库无需额外配置所有org.jetbrains.exposed制品均从该仓库发布。在 Gradle 中使用 exposed-bomGradle 中的等价写法是使用platform()依赖约束。Kotlin DSL 的完整示例来自 exposed-bom/README.mdrepositories { // Versions after 0.33.1 mavenCentral() } dependencies { implementation(platform(org.jetbrains.exposed:exposed-bom:1.5.0)) implementation(org.jetbrains.exposed, exposed-core) implementation(org.jetbrains.exposed, exposed-dao) implementation(org.jetbrains.exposed, exposed-jdbc) }要点说明platform(...)是 Gradle 对 Maven BOM 的官方支持它会将该 POM 中dependencyManagement的版本约束应用到当前构建此后声明 Exposed 依赖时同样无需写版本号。仓库配置文档明确注释Versions after 0.33.1使用mavenCentral()即较新版本的 Exposed 制品发布在 Maven Central必须在repositories中加入中央仓库使用 Groovy DSL 的读者把implementation(a, b)换成implementation a:b的字符串形式即可。与其它平台依赖的叠加platform()不是排他性的你可以同时引入 Spring Boot BOM、JUnit BOM 等Gradle 会按最近声明优先/显式版本优先的规则合并约束。仓库的 samples/exposed-migration/build.gradle.kts 中testImplementation(platform(org.junit:junit-bom:5.10.0))就是这种叠加用法的实际例子。结合模块体系挑选依赖core 一个 transport 起步要正确使用 BOM还需要知道该往dependencies里放哪些模块。根据仓库官方文档 documentation-website/Writerside/topics/Adding-dependencies.md 与 README.mdExposed 模块按职责分为四类BOM 统一管理其中全部模块的版本类别模块说明核心模块exposed-core必选。提供类型安全的 DSL 与全部底层抽象传输模块互斥二选一exposed-jdbc/exposed-r2dbc定义与数据库通信的方式只能选其一不能同时引入数据库访问模块exposed-dao可选。提供更高层的 DAO API仅兼容exposed-jdbc与exposed-r2dbc不兼容扩展模块exposed-crypt、exposed-java-time、exposed-jodatime、exposed-json、exposed-kotlin-datetime、exposed-money、exposed-spring-boot-starter、exposed-spring-boot4-starter、spring-transaction、spring7-transaction、exposed-migration-core、exposed-migration-jdbc、exposed-migration-r2dbc等按需引入处理特定数据类型、加密、日期时间、Spring 集成与迁移因此最小的依赖集是exposed-core 一个传输模块如exposed-jdbc。引入 BOM 后这些模块的版本全部被统一约束你只需要在更换版本时修改 BOM 一处。另外要注意BOM 只管 Exposed 自身的模块版本数据库驱动如 H2、PostgreSQL JDBC、R2DBC 驱动仍需在工程中单独声明版本官方文档的示例中 H2 驱动即以com.h2database:h2:2.4.240的形式显式引入。进阶路线BOM 与 exposed-version-catalog 的异同仓库中还有另一条依赖管理路线Gradle 版本目录Version Catalog对应的制品是exposed-version-catalog说明文档见 exposed-version-catalog/README.md于 1.4.0 版本引入见 CHANGELOG.md。它与 BOM 的目标一致——统一管理全部 Exposed 模块版本但机制不同BOMexposed-bomMaven/Gradle 通用。通过dependencyManagement/platform()导入使用标准坐标字符串org.jetbrains.exposed:exposed-core声明依赖适合 Maven 用户也适合偏好传统写法的 Gradle 用户。版本目录exposed-version-catalogGradle 专属。在settings.gradle.kts中导入后可通过**类型安全的访问器accessor**引用模块例如implementation(exposedLibs.core)、implementation(exposedLibs.jdbc)、implementation(exposedLibs.kotlin.datetime)。访问器命名规则为去掉exposed-前缀、连字符转为嵌套访问器例如exposed-kotlin-datetime→exposedLibs.kotlin.datetime、spring7-transaction→exposedLibs.spring7.transaction。版本目录还支持整体覆盖版本在导入时通过version(exposed, 1.5.0)即可在单点修改全部模块的版本这与 BOM 的改一处体验一致。仓库中的示例工程 samples/exposed-spring/build.gradle.kts 即采用了exposedLibs.spring.boot4.starter、exposedLibs.jdbc的访问器写法可作为实践参考。一个值得注意的细节官方将目录命名为exposedLibs而非exposed是因为 Exposed Gradle 插件会注册名为exposed的工程扩展exposed { migrations { } }DSL而版本目录也会以目录名注册扩展二者重名会触发Cannot add extension with name exposed冲突若你的项目不应用该插件则完全可以命名为exposed。选用建议Maven 工程只能走 BOM 路线Gradle 工程两条路线皆可——想要类型安全的编译期校验就选版本目录想要与 Maven 工程保持一致的坐标写法则选 BOM。仓库中的实现与发布依据以下仓库事实可以帮助你确认 BOM 在 Exposed 构建体系中的位置settings.gradle.kts 第 15 行include(exposed-bom)确认 BOM 是官方多模块构建的一部分与exposed-version-catalog第 28 行并列。build.gradle.kts 将exposed-bom与exposed-version-catalog列入apiValidation.ignoredProjects并在subprojects中跳过它们不应用 Kotlin JVM 插件印证这两个模块是无源码的聚合制品BOM 只产出 POM不产出 jar 与 API。CHANGELOG.md 记录了 BOM 自 0.32.1 引入、以及后续发布时 BOM 模块缺失的修复条目可作为版本演进的时间线证据。版本号说明本文示例沿用仓库文档标注的1.5.0实际使用时请以你正在引入的 Exposed 版本为准BOM 版本号与模块版本号始终一致如1.4.0对应全模块1.4.0。最佳实践小结版本只写一次在 Maven 中只维护dependencyManagement里的 BOM 版本在 Gradle 中只维护platform(...)里的 BOM 版本其余 Exposed 依赖一律省略版本号。模块组合保持克制按官方建议选择exposed-core 一个传输模块exposed-jdbc或exposed-r2dbcexposed-dao及扩展模块按需添加避免无谓的体积与冲突面。驱动与日志另行声明数据库 JDBC/R2DBC 驱动、SLF4J 实现类依赖不属于 BOM 管辖范围需单独引入。升级即改一处需要升级 Exposed 时只更新 BOM/平台依赖的版本号所有模块自动对齐从机制上杜绝了跨版本混用的风险。赞分享ORM后端数据存储【免费下载链接】ExposedKotlin SQL Framework项目地址https://gitcode.com/gh_mirrors/ex/Exposed点击查看免费下载相关推荐InvenTree BOM物料清单实战指南BOM 行项字段、单位换算、校验和机制与多级 BOMInvenTree BOM物料清单实战指南BOM 行项字段、单位换算、校验和机制与多级 BOM 本文基于 InvenTree 官方文档 BOM 文档 ht后端前端企业应用ERPopen-source-rover 控制板 BOM v2.0.3 管理指南从 KiCad 物料清单到 DigiKey 一键下单open source rover 控制板 BOM v2.0.3 管理指南从 KiCad 物料清单到 DigiKey 一键下单 本篇指南围绕 open sou机器人嵌入式如何快速掌握ExposedKotlin SQL框架的终极入门指南如何快速掌握ExposedKotlin SQL框架的终极入门指南 Exposed是由JetBrains开发的Kotlin SQL框架它提供了类型安全的SQLORM后端数据存储上一篇嵌入式屏幕显示中文怎么选u8g2_wqy 中文字体库完整指南下一篇猫抓 cat-catch网页视频下载完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Git远程认证失败:SSH密钥与PAT配置全指南
Git远程认证失败:SSH密钥与PAT配置全指南

1. 这个报错到底在说什么?——不是密码错了,是“门禁系统”根本没给你留密码口remote: Invalid username or token. Password authentication is not supported for Git operations这行报错,我第一次看到时也下意识去改密码、重输账号&#x… · 2026/9/25 15:45:18

Atlas 300V 24G部署YOLO全流程:从CANN环境配置到INT8量化调优
Atlas 300V 24G部署YOLO全流程:从CANN环境配置到INT8量化调优

做一个项目,名字就叫"atlas"。这不是什么新框架,也不是什么花哨的中间件,而是一块实打实的算力底座——昇腾Atlas 300V 24G推理加速卡,外加在这张卡上从零把YOLO系列模型部署起来的一整套流程。最近总有朋友问&#xff… · 2026/9/25 15:45:06

uiautomator2 官方 API 详解:Device、Session 与 XPath 三大核心类的完整使用指南
uiautomator2 官方 API 详解:Device、Session 与 XPath 三大核心类的完整使用指南

测试移动开发GUI 自动化 【免费下载链接】uiautomator2 Android Uiautomator2 Python Wrapper 项目地址: https://gitcode.com/gh_mirrors/ui/uiautomator2 点击查看 免费下载 本文基于 uiautomator2 仓库的 API 文档(docs/api.rst)与源码实… · 2026/9/25 15:45:06

RAG系统学习
RAG系统学习

参考:1.从零拆解一个 RAG 系统:纯 API 调用、无需 GPU|基于 LangChain Chroma DeepSeek 的学习笔记_通过api调用rag-CSDN博客 一、RAG 到底在解决什么问题? 大模型有两个硬伤: 训练数据有截止日期,不知… · 2026/9/25 16:14:48

KytyPS5内核模拟揭秘:用C++20重建PS5虚拟内存、文件系统和pthread同步原语的底层设计
KytyPS5内核模拟揭秘:用C++20重建PS5虚拟内存、文件系统和pthread同步原语的底层设计

KytyPS5内核模拟揭秘:用C20重建PS5虚拟内存、文件系统和pthread同步原语的底层设计 【免费下载链接】KytyPS5 PlayStation 5 emulator for Windows, Linux and MacOS 项目地址: https://gitcode.com/gh_mirrors/ky/KytyPS5 KytyPS5 是一款免费的开源 PS5 模拟… · 2026/9/25 16:14:48

CiLocks ngrok隧道详解:如何把本地PHP服务秒变公网可访问的完整指南
CiLocks ngrok隧道详解:如何把本地PHP服务秒变公网可访问的完整指南

CiLocks ngrok隧道详解:如何把本地PHP服务秒变公网可访问的完整指南 【免费下载链接】CiLocks Crack Interface lockscreen, Metasploit and More Android/IOS Hacking 项目地址: https://gitcode.com/GitHub_Trending/ci/CiLocks CiLocks 是一款面向 Androi… · 2026/9/25 16:14:42

VoltAgent User Analytics:按用户分组 Trace、按会话聚合并联动反馈信号的排查方法
VoltAgent User Analytics:按用户分组 Trace、按会话聚合并联动反馈信号的排查方法

人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆 【免费下载链接】voltagent AI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework 项目地址: https://gitcode.com/gh_mirrors/vo/voltagent 点击查看 免费下载 在… · 2026/9/25 16:14:42

OpenShift Extended 测试实战:在 origin 仓库中编写、运行与结构化组织扩展测试
OpenShift Extended 测试实战:在 origin 仓库中编写、运行与结构化组织扩展测试

测试云原生质量保障 【免费下载链接】origin Conformance test suite for OpenShift 项目地址: https://gitcode.com/gh_mirrors/or/origin 点击查看 免费下载 在 origin(OpenShift 的 Conformance 测试套件仓库)中,test/extende… · 2026/9/25 16:14:36

制造业智能体落地实践:从架构选型到Word文档生成全流程
制造业智能体落地实践:从架构选型到Word文档生成全流程

1. 制造业智能体到底在做什么:从一个“满分Word”说起第一次看到“制造业智能体实践(满分Word)”这个标题,很多人会以为这是一份作业模板或者某个课程的大作业。实际上,它指向的是一类非常具体的东西:把大模… · 2026/9/25 16:14:24

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

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

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

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

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

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

了解更多?预约专属演示

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

企业微信二维码