SuperAPI AI 工具集

kotlin-tooling-kotlin-toolchain-plugin-authoring

通用与其它

查看项目

更新于 10-15 22:09

技能介绍

用途:该技能用于编写、设计 Kotlin Toolchain 的本地插件,作为声明式 YAML 构建的官方扩展方式,把代码生成、构建期处理、自定义校验等步骤接入构建。

何时使用:需要库工作流要求的构建期步骤(代码生成、schema 编译、资源转换、版本戳记)、接入构建的自定义校验、发布到 JAR 类路径或下游任务的构建期值、或重复工作流的具名 CLI 命令(./kotlin do release)时可编写插件。module.yaml 已覆盖的依赖、JDK 供给、源码布局、基本打包无需插件;也不能用它复用 Gradle 插件,Kotlin Toolchain 无法消费它们。

主要构成:插件是 jvm/amper-plugin 模块,包含 module.yaml、plugin.yaml 与 src(Settings.kt 的 @Configurable 接口、tasks 目录下每个文件的 @TaskAction、共享逻辑的 internal 辅助函数)。project.yaml 需在顶层 plugins 块注册插件,否则消费方无法解析 id。plugin.yaml 声明 tasks、commands 与 generated.resources/sources。

用法要点:@Configurable 接口的属性 getter 提供默认值,嵌套块成为嵌套 @Configurable 接口;消费方在 module.yaml 的 plugins 下按需覆盖。@TaskAction 是顶层函数,@Input 会被快照以支持执行规避,@Output 目录由 Toolchain 创建并按传入路径写入;无 @Output 的任务总会重跑。依赖通过匹配路径推断:生产者写 @Output,消费方 @Input 指向 ${tasks.<task>.action.outputDir}/<file>。${module.rootDir}、${taskOutputDir}、${pluginSettings} 等引用可用。临时覆盖用环境变量(无 -Pkey=value),建议把 env map 作为构造参数传入以便单测,并在 README 记录。任务间共享步骤应直接调用内部函数,不要拆成一串构建图任务。

适用场景:为声明式构建补充生成资源/源码、版本戳记、校验、具名命令等;仓库中至少保留一个消费模块做端到端验证。

限制:插件目前仅本地,不能发布到公共仓库;插件是模块级,每个消费模块都要在 plugins 下声明,跨模块效果通过文件传递;module.yaml 暂无 ${...} 插值(0.11);无 afterEvaluate 与懒 Provider/Property 图;-h/--help 不列插件命令,需用 ./kotlin show commands。插件文档:https://kotlin-toolchain.org/dev/user-guide/plugins/