用途:在 Kotlin 仓库的 kotlin-gradle-plugin-integration-tests 模块中,把集成测试参数化的最高支持 Gradle 版本提升到指定新版本。该模块按固定 Gradle 版本列表跑测试,提升最高版本需要多处同步修改。
触发场景:用户说“bump Gradle in tests”“bump max Gradle”“add Gradle X.Y.Z to integration tests”“test against the new Gradle X.Y.Z release”“update MAX_SUPPORTED Gradle”“support Gradle X.Y in KGP integration tests”等。即使请求看起来只涉及某个文件,也应执行完整流程。
输入:要求用户提供新 Gradle 版本字符串,如 9.6.0、9.6.1、9.6.0-rc-1、10.0.0,也接受 -rc-N、-milestone-N、-nightly 预发布限定符;未提供版本时先询问。由 MAJOR.MINOR.PATCH[-qualifier] 派生常量名 G_MAJOR_MINOR(仅主次版本),常量值保留完整输入字符串。若同名常量已存在,就地更新其值和 gradleVersions 对应条目,不创建重复项。
涉及文件(均位于 libraries/tools/kotlin-gradle-plugin-integration-tests/):TestVersions.kt 有新常量、MAX_SUPPORTED、最后一个 AgpCompatibilityMatrix 条目共 3 处修改;build.gradle.kts 在 gradleVersions 列表追加一项;GradleCompatibilityIT.kt 在 properPluginVariantIsUsed 的 when 中新增分支。另需只读参考 GradlePluginVariant.kt。
工具要求:按项目 CLAUDE.md,用 JetBrains IDE MCP 工具读写这些文件,读取用 mcp__idea__read_file 或 mcp__idea__get_symbol_info,编辑用 mcp__idea__apply_patch,每次编辑后运行 mcp__idea__get_file_problems(errorsOnly: false)并修复由本次改动引起的问题;不要用 Read、Edit、Write、Grep、Glob 操作这些文件。
步骤:1) 确认版本,拒绝无 MAJOR.MINOR.PATCH 核心或低于当前 MAX_SUPPORTED 的输入;2) 读 GradlePluginVariant.kt,选 gradleVersion 不大于新版本 MAJOR.MINOR 的最高枚举项,记下其 sourceSetName;3) 在 TestVersions 的 object Gradle 中按数字顺序插入新常量;4) 更新 MAX_SUPPORTED;5) 更新最后一个 AgpCompatibilityMatrix 条目的 maxSupportedGradleVersion,不动其他参数;6) 在 build.gradle.kts 的 gradleVersions 末尾追加版本,顺序与 TestVersions.Gradle 一致;7) 在 when 块顶部加入 GradleVersion.version(TestVersions.Gradle.G_X_Y) -> "<sourceSetName>"。
验证:对每个修改文件运行 mcp__idea__get_file_problems。可选执行 ./gradlew :kotlin-gradle-plugin-integration-tests:<prefix>TestsForGradle_X_Y_Z --tests "GradleCompatibilityIT.properPluginVariantIsUsed" -q,任务名由 build.gradle.kts 循环生成,版本点号替换为下划线,<prefix> 用 ./gradlew :kotlin-gradle-plugin-integration-tests:tasks --all | grep TestsForGradle_X_Y_Z 查找。
提交:提交前读 docs/code_authoring_and_core_review.md;三个文件放一个提交,主题形如 [Gradle] Run tests against Gradle X.Y.Z release;有关联 YouTrack 问题时在正文加 ^KT-XXXXX Fixed。
限制:AGP.MAX_SUPPORTED 不在范围内,由其独立任务处理;不改三个文件之外的文件,其他模块通过 TestVersions 传递获得新版本。