[Gradle] KotlinJvmRun: Configure jvm toolchain

^KT-59055 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-06-02 10:32:48 +02:00
committed by Space Team
parent 38ae16e9d3
commit 75ab2ce4e7
2 changed files with 30 additions and 0 deletions
@@ -1,10 +1,12 @@
package org.jetbrains.kotlin.gradle.targets.jvm.tasks
import org.gradle.api.file.FileCollection
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.JavaExec
import org.gradle.api.tasks.TaskProvider
import org.gradle.jvm.toolchain.JavaToolchainService
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
@@ -17,6 +19,7 @@ import org.jetbrains.kotlin.gradle.plugin.internal.usedAtConfigurationTime
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
import org.jetbrains.kotlin.gradle.utils.getByType
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.gradle.utils.property
import org.jetbrains.kotlin.tooling.core.UnsafeApi
@@ -118,6 +121,11 @@ private fun KotlinJvmTarget.registerKotlinJvmRun(taskName: String, compilation:
.orElse(project.providers.systemProperty("mainClass").usedAtConfigurationTime())
.orElse(mainClass).usedAtConfigurationTime()
)
project.extensions.findByType(JavaToolchainService::class.java)?.let { toolchainService ->
val toolchain = project.extensions.getByType(JavaPluginExtension::class.java).toolchain
task.javaLauncher.convention(toolchainService.launcherFor(toolchain))
}
}
@OptIn(UnsafeApi::class)
@@ -7,12 +7,15 @@
package org.jetbrains.kotlin.gradle.unitTests
import org.gradle.api.JavaVersion
import org.gradle.api.tasks.JavaExec
import org.jetbrains.kotlin.gradle.dependencyResolutionTests.mavenCentralCacheRedirector
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.configurationResult
import org.jetbrains.kotlin.gradle.plugin.launch
import org.jetbrains.kotlin.gradle.util.*
import org.jetbrains.kotlin.konan.target.HostManager
import org.junit.Assume
import kotlin.test.*
class KotlinJvmRunTest {
@@ -161,5 +164,24 @@ class KotlinJvmRunTest {
checkDiagnostics("jvmRunTask-conflict")
}
@Test
fun `test - jvmRun task is using kotlin configured toolchain - jvm 11`() = buildProjectWithMPP().runLifecycleAwareTest {
Assume.assumeFalse("https://github.com/gradle/native-platform/issues/274", HostManager.hostIsMingw)
val kotlin = multiplatformExtension
kotlin.jvmToolchain(11)
kotlin.jvm()
configurationResult.await()
assertEquals(JavaVersion.VERSION_11, assertNotNull(kotlin.jvm().mainRun.await()).task.get().javaVersion)
}
@Test
fun `test - jvmRun task is using kotlin configured toolchain - jvm 17`() = buildProjectWithMPP().runLifecycleAwareTest {
Assume.assumeFalse("https://github.com/gradle/native-platform/issues/274", HostManager.hostIsMingw)
val kotlin = multiplatformExtension
kotlin.jvmToolchain(17)
kotlin.jvm()
configurationResult.await()
assertEquals(JavaVersion.VERSION_17, assertNotNull(kotlin.jvm().mainRun.await()).task.get().javaVersion)
}
}