用途:把整个 Gradle Kotlin/JVM 项目迁移到 Kotlin Toolchain,同时完成依赖与配置的机械式翻译,并为 Toolchain 没有原生支持的每个 Gradle 插件寻找替代方案。模板见 references/examples.md,来自一次真实迁移。
主要能力与工作流:
- 清点 Gradle 构建:列出 plugins 块、约定插件与跨项目配置、自定义任务、对构建产物的源码依赖、libs.versions.toml、gradle.properties、CI 工作流,写入 MIGRATION_PLAN.md 作为检查清单。
- 决定布局与插件集:布局用 maven-like,在 module.yaml 中设 layout: maven-like,无需移动源码,支持 jvm/app 与 jvm/lib。每个第三方 Gradle 插件归为 drop、native 或 reimplement,绝不保留 Gradle 插件;自定义约定脚本变成 module 模板而非本地插件。写本地插件前先在 GitHub 搜索,优先 vendor 现成实现。所有依赖应进入版本目录,坐标须写成 $libs.* 引用。
- 实现:复制 kotlin / kotlin.bat,在 .sdkmanrc 固定 kotlintoolchain=<version>;写 project.yaml 与各模块 module.yaml;每个本地插件建为 jvm/amper-plugin 模块,用 ./kotlin show modules 验证模型可加载。
- 重写 CI:设 KOTLIN_CLI_NO_WELCOME_BANNER: "1",./gradlew build && ./gradlew check 改为 ./kotlin build && ./kotlin check;产物上传路径需自建 package 插件把 JAR 放到 ${module.rootDir}/build/libs/${module.name}.jar。
- 端到端验证:依次运行 ./kotlin show modules、clean && build、test、check、按需 do currentVersion / do jib / do package / do ktlintFormat,并记录输出。
注意点与限制:module.yaml 不支持 ${...} 插值,configFile 需用模块相对路径;模块名来自目录名,不要硬编码,用 ${module.name};插件设置缺少 enabled: true 会被忽略;vendor 来的 linter 插件可能比 Gradle 插件更严格,需用设置项把关;版本目录的 [bundles] 无对应物,改为每个 bundle 一个模块模板;无 buildSrc / 约定插件对应机制,共享配置进模板;无依赖 exclude 等价物,传递排除会静默消失。资料未提供具体收费与价格信息。