11.3 构建工具 API
3 分钟阅读
11.3 构建工具 API
Beta
BTA 支持 Kotlin/JVM、Kotlin/JS 和 Kotlin/Wasm。它目前不支持 Kotlin/Native。
Kotlin 提供了构建工具 API(BTA),它简化了构建系统与 Kotlin 编译器的集成方式。
为构建系统添加完整的 Kotlin 支持(例如增量编译、Kotlin 编译器插件、守护进程以及 Kotlin Multiplatform)需要投入大量精力。BTA 的目标是在构建系统与 Kotlin 编译器生态之间提供统一的 API,从而降低这种复杂性。
BTA 定义了构建系统可以实现的一个统一入口点。这样就无需与编译器内部细节进行深度集成。
稳定性级别因目标而异:对 Kotlin/JVM 而言 BTA 处于 Beta 阶段,对 Kotlin/JS 和 Kotlin/Wasm 而言处于 Alpha 阶段。更多细节请参阅 。使用 BTA 需要通过 @OptIn(ExperimentalBuildToolsApi::class) 选择启用。
与 Gradle 的集成
Kotlin Gradle 插件(KGP)在 Kotlin/JVM 编译中默认使用 BTA。
注意: 我们非常欢迎你在 YouTrack 中反馈使用 KGP 的体验。
为 Kotlin/JS、Kotlin/Wasm 和 Kotlin 元数据启用 BTA
Alpha
从 Kotlin 2.4.20 开始,KGP 也可以通过 BTA 运行 Kotlin/JS、Kotlin/Wasm 和 Kotlin 元数据的编译。这让 KGP 与编译器的交互更加一致,在某些情况下编译也会变得更快、更稳定。
在 Kotlin 2.4.20 中,这些目标是作为可选启用的。要试用它们,请把相应的属性添加到你的 gradle.properties 文件中:
kotlin.js.runViaBuildToolsApi = true
kotlin.wasm.runViaBuildToolsApi = true
kotlin.metadata.runViaBuildToolsApi = true
配置不同的编译器版本
使用 BTA,你现在可以使用与 KGP 所用版本不同的 Kotlin 编译器版本。这在以下情况下很有用:
- 你想尝试新的 Kotlin 特性,但还没有更新构建脚本。
- 你需要最新的插件修复,但目前想继续使用较旧的编译器版本。
下面是一个在 build.gradle.kts 文件中进行这种配置的示例:
| |
兼容的 Kotlin 编译器与 KGP 版本
BTA 支持:
- 之前的三个 Kotlin 主要编译器版本。
- 向前一个主要版本。
例如,在 KGP 2.2.0 中,受支持的 Kotlin 编译器版本是:
- 1.9.25
- 2.0.x
- 2.1.x
- 2.2.x
- 2.3.x
限制
把不同的编译器版本与编译器插件一起使用,可能会导致 Kotlin 编译器异常。Kotlin 团队计划在未来的 Kotlin 版本中解决这个问题。
使用 “in process” 策略启用增量编译
KGP 支持三种编译器执行策略。通常,“in-process” 策略(在 Gradle 守护进程中运行编译器)不支持增量编译。
使用 BTA 后,“in-process” 策略现在支持增量编译。要启用它,请把以下属性添加到你的 gradle.properties 文件中:
| |
与 Maven 的集成
BTA 让 kotlin-maven-plugin 能够支持 Kotlin 守护进程,后者是默认的编译器执行策略。kotlin-maven-plugin 默认使用 BTA,因此无需任何配置。
BTA 使得将来可以提供更多特性,例如增量编译稳定化。