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 c41a9349c33..15cd838591e 100755 --- 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 @@ -94,6 +94,10 @@ internal abstract class KotlinSourceSetProcessor>( open fun run() { addKotlinDirectoriesToJavaSourceSet() doTargetSpecificProcessing() + + if (kotlinCompilation is KotlinWithJavaCompilation) { + createAdditionalClassesTaskForIdeRunner() + } } private fun addKotlinDirectoriesToJavaSourceSet() { @@ -127,6 +131,16 @@ internal abstract class KotlinSourceSetProcessor>( return getSourceDirectories(sourceDirectorySet).minus(getSourceDirectories(javaSourceSet.java)) } + private fun createAdditionalClassesTaskForIdeRunner() { + // Workaround: as per KT-26641, when there's a Kotlin compilation with a Java source set, we create another task + // that has a name composed as 'Classes`, where the IDE module name is the default source set name: + val expectedClassesTaskName = "${kotlinCompilation.defaultSourceSetName}Classes" + project.tasks.run { + if (findByName(expectedClassesTaskName) == null) + create(expectedClassesTaskName) { task -> task.dependsOn(getByName(kotlinCompilation.compileAllTaskName)) } + } + } + protected abstract fun doCreateTask(project: Project, taskName: String): T } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index d5ee4c50b0a..bc4942f16e5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -130,11 +130,7 @@ abstract class AbstractKotlinCompilation( ) override val compileAllTaskName: String - get() = lowerCamelCaseName( - target.disambiguationClassifier, - compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }, - "classes" - ) + get() = lowerCamelCaseName(target.disambiguationClassifier, compilationName, "classes") override lateinit var compileDependencyFiles: FileCollection