[repo] Use BTA to compile settings plugins

Switch compilation of settings conventions to use Build Tools API and
Kotlin compiler version 2.0.21. This allows to continue using language
version 1.8 which should be soon removed from Kotlin compiler dev
version.
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 61d6c85..a0aacbb 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -4100,6 +4100,12 @@
             <sha256 value="4109a7bed99846f2d77a75e2c83be8d5478d00473c91269a280610932f4fa275" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.jetbrains.kotlin" name="kotlin-serialization-compiler-plugin-embeddable" version="2.0.21">
+         <artifact name="kotlin-serialization-compiler-plugin-embeddable-2.0.21.jar">
+            <md5 value="34119bc969638efc1318dff8e5e98678" origin="Generated by Gradle"/>
+            <sha256 value="defd26dbc581f31d5029ee44999e104692eb030eabad7d9364c23d8f0b8fd859" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.jetbrains.kotlin" name="kotlin-serialization-compiler-plugin-embeddable" version="2.3.0-dev-704">
          <artifact name="kotlin-serialization-compiler-plugin-embeddable-2.3.0-dev-704.jar">
             <md5 value="d61ea73ee47dc4d41dd8fe21af746830" origin="Generated by Gradle"/>
diff --git a/repo/gradle-settings-conventions/cache-redirector/build.gradle.kts b/repo/gradle-settings-conventions/cache-redirector/build.gradle.kts
index 313350f..f657257 100644
--- a/repo/gradle-settings-conventions/cache-redirector/build.gradle.kts
+++ b/repo/gradle-settings-conventions/cache-redirector/build.gradle.kts
@@ -1,3 +1,6 @@
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
+
 plugins {
     `kotlin-dsl`
     id("org.jetbrains.kotlin.jvm")
@@ -7,4 +10,8 @@
     mavenCentral { setUrl("https://cache-redirector.jetbrains.com/maven-central") }
 }
 
-kotlin.jvmToolchain(8)
+kotlin {
+    @OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalBuildToolsApi::class)
+    compilerVersion = libs.versions.kotlin.`for`.gradle.plugins.compilation
+    jvmToolchain(11)
+}
diff --git a/repo/gradle-settings-conventions/develocity/build.gradle.kts b/repo/gradle-settings-conventions/develocity/build.gradle.kts
index 1b5e405..c5ae0c7 100644
--- a/repo/gradle-settings-conventions/develocity/build.gradle.kts
+++ b/repo/gradle-settings-conventions/develocity/build.gradle.kts
@@ -1,3 +1,6 @@
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
+
 plugins {
     `kotlin-dsl`
     id("org.jetbrains.kotlin.jvm")
@@ -9,7 +12,11 @@
     gradlePluginPortal()
 }
 
-kotlin.jvmToolchain(8)
+kotlin {
+    @OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalBuildToolsApi::class)
+    compilerVersion = libs.versions.kotlin.`for`.gradle.plugins.compilation
+    jvmToolchain(11)
+}
 
 val buildGradlePluginVersion = extra.get("kotlin.build.gradlePlugin.version")
 dependencies {
diff --git a/repo/gradle-settings-conventions/gradle.properties b/repo/gradle-settings-conventions/gradle.properties
index 1f8316b..c7f7f47 100644
--- a/repo/gradle-settings-conventions/gradle.properties
+++ b/repo/gradle-settings-conventions/gradle.properties
@@ -5,3 +5,6 @@
 kotlin.daemon.jvmargs=-Xmx3g
 
 org.gradle.kotlin.dsl.allWarningsAsErrors=true
+kotlin.compiler.runViaBuildToolsApi=true
+kotlin.compiler.execution.strategy=in-process
+
diff --git a/repo/gradle-settings-conventions/internal-gradle-setup/build.gradle.kts b/repo/gradle-settings-conventions/internal-gradle-setup/build.gradle.kts
index 87e8b08..e2e9269 100644
--- a/repo/gradle-settings-conventions/internal-gradle-setup/build.gradle.kts
+++ b/repo/gradle-settings-conventions/internal-gradle-setup/build.gradle.kts
@@ -1,3 +1,6 @@
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
+
 plugins {
     `kotlin-dsl`
     kotlin("jvm")
@@ -18,7 +21,22 @@
     testRuntimeOnly(libs.junit.jupiter.engine)
 }
 
-kotlin.jvmToolchain(8)
+kotlin {
+    @OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalBuildToolsApi::class)
+    compilerVersion = libs.versions.kotlin.`for`.gradle.plugins.compilation
+    jvmToolchain(11)
+}
+
+configurations {
+    "kotlinCompilerPluginClasspathMain" {
+        resolutionStrategy.eachDependency {
+            if (requested.group == "org.jetbrains.kotlin" && requested.name == "kotlin-serialization-compiler-plugin-embeddable") {
+                useTarget("org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:${libs.versions.kotlin.`for`.gradle.plugins.compilation.get()}")
+                because("Compatible with Kotlin compiler ${libs.versions.kotlin.`for`.gradle.plugins.compilation.get()} version")
+            }
+        }
+    }
+}
 
 tasks {
     test {
diff --git a/repo/gradle-settings-conventions/jvm-toolchain-provisioning/build.gradle.kts b/repo/gradle-settings-conventions/jvm-toolchain-provisioning/build.gradle.kts
index bfec8c6..76d3467 100644
--- a/repo/gradle-settings-conventions/jvm-toolchain-provisioning/build.gradle.kts
+++ b/repo/gradle-settings-conventions/jvm-toolchain-provisioning/build.gradle.kts
@@ -1,3 +1,6 @@
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
+
 plugins {
     `kotlin-dsl`
     id("org.jetbrains.kotlin.jvm")
@@ -12,4 +15,8 @@
     implementation(libs.gradle.toolchainsFoojayResolver.gradlePlugin)
 }
 
-kotlin.jvmToolchain(8)
+kotlin {
+    @OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalBuildToolsApi::class)
+    compilerVersion = libs.versions.kotlin.`for`.gradle.plugins.compilation
+    jvmToolchain(11)
+}
diff --git a/repo/gradle-settings-conventions/kotlin-bootstrap/build.gradle.kts b/repo/gradle-settings-conventions/kotlin-bootstrap/build.gradle.kts
index 313350f..f657257 100644
--- a/repo/gradle-settings-conventions/kotlin-bootstrap/build.gradle.kts
+++ b/repo/gradle-settings-conventions/kotlin-bootstrap/build.gradle.kts
@@ -1,3 +1,6 @@
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
+
 plugins {
     `kotlin-dsl`
     id("org.jetbrains.kotlin.jvm")
@@ -7,4 +10,8 @@
     mavenCentral { setUrl("https://cache-redirector.jetbrains.com/maven-central") }
 }
 
-kotlin.jvmToolchain(8)
+kotlin {
+    @OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalBuildToolsApi::class)
+    compilerVersion = libs.versions.kotlin.`for`.gradle.plugins.compilation
+    jvmToolchain(11)
+}
diff --git a/repo/gradle-settings-conventions/kotlin-daemon-config/build.gradle.kts b/repo/gradle-settings-conventions/kotlin-daemon-config/build.gradle.kts
index 313350f..f657257 100644
--- a/repo/gradle-settings-conventions/kotlin-daemon-config/build.gradle.kts
+++ b/repo/gradle-settings-conventions/kotlin-daemon-config/build.gradle.kts
@@ -1,3 +1,6 @@
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
+
 plugins {
     `kotlin-dsl`
     id("org.jetbrains.kotlin.jvm")
@@ -7,4 +10,8 @@
     mavenCentral { setUrl("https://cache-redirector.jetbrains.com/maven-central") }
 }
 
-kotlin.jvmToolchain(8)
+kotlin {
+    @OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalBuildToolsApi::class)
+    compilerVersion = libs.versions.kotlin.`for`.gradle.plugins.compilation
+    jvmToolchain(11)
+}