Fix kapt compile classpath was using wrong JRE classes

Kapt worker compile classpath was using JRE classes from 'java.home'
instead of toolchain one. This was leading to invocation errors
when build is running on latest JDK releases, but Kotlin jvm target
is set to "1.8".

^KT-48402 Fixed
This commit is contained in:
Yahor Berdnikau
2022-02-17 11:13:52 +01:00
parent c1925885fe
commit 81a66258fa
2 changed files with 32 additions and 1 deletions
@@ -101,6 +101,34 @@ open class Kapt3WorkersIT : Kapt3IT() {
}
}
@DisplayName("KT-48402: Kapt worker classpath is using JRE classes from toolchain")
@JdkVersions(versions = [JavaVersion.VERSION_16])
@GradleWithJdkTest
fun kaptClasspathJreToolchain(
gradleVersion: GradleVersion,
jdk: JdkVersions.ProvidedJdk
) {
project(
"simple".withPrefix,
gradleVersion,
buildJdk = jdk.location
) {
buildGradle.modify {
"""
$it
kotlin {
jvmToolchain {
languageVersion.set(JavaLanguageVersion.of("8"))
}
}
""".trimIndent()
}
build("assemble")
}
}
@DisplayName("Additional Kapt jvm arguments are passed to the process")
@GradleTest
internal fun additionalJvmArgumentsArePassed(gradleVersion: GradleVersion) {
@@ -112,7 +112,10 @@ abstract class KaptWithoutKotlincTask @Inject constructor(
val compileClasspath = classpath.files.toMutableList()
if (addJdkClassesToClasspath.get()) {
compileClasspath.addAll(0, PathUtil.getJdkClassesRootsFromCurrentJre())
compileClasspath.addAll(
0,
PathUtil.getJdkClassesRoots(defaultKotlinJavaToolchain.get().providedJvm.get().javaHome)
)
}
val kaptFlagsForWorker = mutableSetOf<String>().apply {