diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 6cb143f98e6..1d8a8b97c43 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -438,6 +438,14 @@ open class KotlinAndroidPlugin @Inject constructor(val scriptHandler: ScriptHand } javaTask.doFirst { + /* + * It's important to modify javaTask.classpath only in doFirst, + * because Android plugin uses ConventionMapping to modify it too (see JavaCompileConfigAction.execute), + * and setting classpath explicitly prevents usage of Android mappings. + * Also classpath setted by Android can be modified after excecution of some tasks (see VarianConfiguration.getCompileClasspath) + * ex. it adds some support libraries jars after execution of prepareComAndroidSupportSupportV42311Library task, + * so it's only safe to modify javaTask.classpath right before its usage + */ javaTask.classpath += project.files(kotlinTask.property("kotlinDestinationDir")) } }