From b5c0915b6659dd695ba9735904ba44eb5bae2fd7 Mon Sep 17 00:00:00 2001 From: olme04 Date: Wed, 12 Jan 2022 10:04:25 +0000 Subject: [PATCH] Setup jvm toolchain * compile using JDK 8 * able to run tests on JDK 8, 11 and 17 --- buildSrc/build.gradle.kts | 7 +++++++ buildSrc/src/main/kotlin/targetsJvm.kt | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index a9bae0750..c298e838c 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -6,3 +6,10 @@ dependencies { implementation(buildLibs.build.kotlin) implementation(buildLibs.build.kotlinx.atomicfu) } + +kotlin { + jvmToolchain { + this as JavaToolchainSpec + languageVersion.set(JavaLanguageVersion.of(8)) + } +} diff --git a/buildSrc/src/main/kotlin/targetsJvm.kt b/buildSrc/src/main/kotlin/targetsJvm.kt index cb7058f5d..8f226e153 100644 --- a/buildSrc/src/main/kotlin/targetsJvm.kt +++ b/buildSrc/src/main/kotlin/targetsJvm.kt @@ -1,7 +1,19 @@ +import org.gradle.jvm.toolchain.* +import org.gradle.kotlin.dsl.* import org.jetbrains.kotlin.gradle.dsl.* fun KotlinMultiplatformExtension.configureJvm(block: TargetBuilder.() -> Unit = {}) { + jvmToolchain { (this as JavaToolchainSpec).setJdk(8) } jvm { + listOf(11, 17).forEach { jdkVersion -> + testRuns.create("${jdkVersion}Test") { + executionTask.configure { + javaLauncher.set( + project.extensions.getByType().launcherFor { setJdk(11) } + ) + } + } + } testRuns.all { executionTask.configure { // ActiveProcessorCount is used here, to make sure local setup is similar as on CI @@ -12,3 +24,7 @@ fun KotlinMultiplatformExtension.configureJvm(block: TargetBuilder.() -> Unit = } TargetBuilder(sourceSets, "jvm").block() } + +private fun JavaToolchainSpec.setJdk(version: Int) { + languageVersion.set(JavaLanguageVersion.of(version)) +} \ No newline at end of file