Skip to content
Experimental

建置工具 API

目前 BTA 僅支援 Kotlin/JVM。

Kotlin 擁有實驗性的建置工具 API (BTA),可簡化建置系統與 Kotlin 編譯器的整合方式。

為建置系統加入完整的 Kotlin 支援(例如增量編譯、Kotlin 編譯器外掛程式、背景程式 (daemon) 以及 Kotlin Multiplatform)需要耗費大量精力。BTA 旨在透過提供建置系統與 Kotlin 編譯器生態系統之間的統一 API 來降低這種複雜性。

BTA 定義了一個單一的入口點,建置系統可以據此進行實作。這消除了與編譯器內部細節深度整合的需求。

BTA 本身尚未公開發佈以供直接用於您自己的建置工具整合。 如果您對此提案感興趣或想分享回饋,請參閱 KEEP。 請在 YouTrack 中追蹤其開發進度。

與 Gradle 整合

Kotlin Gradle 外掛程式 (KGP) 對 BTA 提供實驗性支援。KGP 預設將 BTA 用於 Kotlin/JVM 編譯。

我們非常感謝您在 YouTrack 中分享您使用 KGP 的回饋。

設定不同的編譯器版本

透過 BTA,您現在可以使用與 KGP 不同版本的 Kotlin 編譯器。這在以下情況非常有用:

  • 您想嘗試新的 Kotlin 特性,但尚未更新建置指令碼。
  • 您需要最新的外掛程式修正,但目前想保留在舊版本的編譯器。

以下是如何在您的 build.gradle.kts 檔案中進行設定的範例:

kotlin
import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi

plugins {
    kotlin("jvm") version "2.2.0"
}

group = "org.jetbrains.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

kotlin {
    jvmToolchain(8)
    @OptIn(ExperimentalBuildToolsApi::class, ExperimentalKotlinGradlePluginApi::class)
    compilerVersion.set("2.1.21") // <-- 使用與 2.2.0 不同的版本
}

相容的 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 檔案中加入以下屬性:

kotlin
kotlin.compiler.execution.strategy=in-process

與 Maven 整合

BTA 使 kotlin-maven-plugin 能夠支援 Kotlin 背景程式 (daemon),這是預設的 編譯器執行策略kotlin-maven-plugin 預設使用 BTA,因此無需進行任何設定。

BTA 使得未來能夠提供更多特性,例如 增量編譯穩定化