Add simplified JVM toolchain configuration method in extension
^KT-52867 Fixed
This commit is contained in:
+34
@@ -605,6 +605,40 @@ class KotlinJavaToolchainTest : KGPBaseTest() {
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("Toolchain simplified method with JDK version in extension is working")
|
||||
@GradleTest
|
||||
internal fun toolchainSimplifiedConfiguration(gradleVersion: GradleVersion) {
|
||||
project(
|
||||
projectName = "simple".fullProjectName,
|
||||
gradleVersion = gradleVersion,
|
||||
buildJdk = getJdk11().javaHome
|
||||
) {
|
||||
//language=Groovy
|
||||
buildGradle.append(
|
||||
"""
|
||||
import org.gradle.api.plugins.JavaPluginExtension
|
||||
import org.gradle.jvm.toolchain.JavaToolchainService
|
||||
|
||||
kotlin {
|
||||
jvmToolchain(8)
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
def toolchain = project.extensions.getByType(JavaPluginExtension.class).toolchain
|
||||
def service = project.extensions.getByType(JavaToolchainService.class)
|
||||
//noinspection GroovyUnusedAssignment
|
||||
def defaultLauncher = service.launcherFor(toolchain)
|
||||
logger.info("Toolchain jdk path: ${'$'}{defaultLauncher.get().metadata.installationPath.asFile.absolutePath}")
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
build("assemble") {
|
||||
assertJdkHomeIsUsingJdk(getToolchainExecPathFromLogs())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun BuildResult.assertJdkHomeIsUsingJdk(
|
||||
javaexecPath: String
|
||||
) = assertOutputContains("[KOTLIN] Kotlin compilation 'jdkHome' argument: $javaexecPath")
|
||||
|
||||
+12
@@ -10,6 +10,7 @@ import org.gradle.api.Action
|
||||
import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.internal.plugins.DslObject
|
||||
import org.gradle.jvm.toolchain.JavaLanguageVersion
|
||||
import org.gradle.jvm.toolchain.JavaToolchainSpec
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
@@ -74,6 +75,17 @@ abstract class KotlinTopLevelExtension(internal val project: Project) : KotlinTo
|
||||
toolchainSupport.applyToolchain(action)
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures [Java toolchain](https://docs.gradle.org/current/userguide/toolchains.html) both for Kotlin JVM and Java tasks.
|
||||
*
|
||||
* @param jdkVersion - jdk version as number. For example, 17 for Java 17.
|
||||
*/
|
||||
fun jvmToolchain(jdkVersion: Int) {
|
||||
jvmToolchain {
|
||||
it.languageVersion.set(JavaLanguageVersion.of(jdkVersion))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures Kotlin daemon JVM arguments for all tasks in this project.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user