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(
|
private fun BuildResult.assertJdkHomeIsUsingJdk(
|
||||||
javaexecPath: String
|
javaexecPath: String
|
||||||
) = assertOutputContains("[KOTLIN] Kotlin compilation 'jdkHome' argument: $javaexecPath")
|
) = 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.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.internal.plugins.DslObject
|
import org.gradle.api.internal.plugins.DslObject
|
||||||
|
import org.gradle.jvm.toolchain.JavaLanguageVersion
|
||||||
import org.gradle.jvm.toolchain.JavaToolchainSpec
|
import org.gradle.jvm.toolchain.JavaToolchainSpec
|
||||||
import org.gradle.util.ConfigureUtil
|
import org.gradle.util.ConfigureUtil
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
@@ -74,6 +75,17 @@ abstract class KotlinTopLevelExtension(internal val project: Project) : KotlinTo
|
|||||||
toolchainSupport.applyToolchain(action)
|
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.
|
* Configures Kotlin daemon JVM arguments for all tasks in this project.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user