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:
+28
@@ -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) {
|
||||
|
||||
+4
-1
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user