SuperAPI AI 工具集

kmp-gradle-settings-catalog

编程与开发

查看项目

更新于 10-17 16:15

技能介绍

该技能聚焦多模块 Kotlin Multiplatform 仓库的 Gradle settings 配置模式,核心是把磁盘目录结构与 Gradle 项目路径解耦:include() 声明路径,projectDir 指定实际位置,从而在嵌套目录树上维持扁平、易记的项目路径。变更目录只需改一行 settings 配置,仓库其余部分无需改动。

主要内容:

一、路径映射与访问器。示例展示以 rootDir 为锚点拼接共享目录、服务目录、媒体目录,集中 include 所有模块后在后方按相同顺序批量赋值 projectDir;并启用 TYPESAFE_PROJECT_ACCESSORS,使消费方通过 :service-a 与 projects.serviceA 引用模块,无需了解目录深度。

二、陷阱说明。include() 必须先于 project() 调用,否则 settings 文件自身即失败。projectDir 指向错误目录不会在赋值处报错,而是在首个依赖它的模块处以缺项目或无法解析的访问器暴露,可用 grep 统计 projectDir 数量与 build.gradle.kts 数量比对自查。路径必须以 rootDir 锚定,避免 ../ 相对上溯绑定到仓库外同名目录。类型安全访问器由 Gradle 路径按 - 和 _ 驼峰化生成,目录重命名无影响,include() 条目重命名会波及所有消费方。

三、仓库声明。pluginManagement 与 dependencyResolutionManagement 是两个互不供给的独立块,仓库需分别声明;FAIL_ON_PROJECT_REPOS 可阻止模块私自声明仓库;删除失效仓库时应在注释中记录原因。

四、版本强制。版本 force 应置于根 build.gradle.kts 的 subprojects 中统一作用于所有模块,并保留原因注释。

五、工具链。解析器约定插件应放在 settings 的 plugins 块,使任意模块的 jvmToolchain 在缺少该 JDK 的机器上也能满足。

六、验证。给出了检查 settings 声明顺序、访问器与 include 路径对应、settings 外无 repositories 块的 grep 命令。模块树跨 git 子模块时映射方式相同但失败模式不同,另见 kmp-git-submodule-module-mapping。