ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/9/25 15:46:07 拓冰建站 浏览量
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),仅供参考