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 bebde18da84..970789e2db0 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 @@ -86,7 +86,7 @@ internal abstract class KotlinSourceSetProcessor>( protected val sourceSetName: String = kotlinCompilation.compilationName - override val kotlinTask: TaskProvider = registerKotlinCompileTask() + override val kotlinTask: TaskProvider = registerKotlinCompileTask(kotlinCompilation.compileKotlinTaskName) protected val javaSourceSet: SourceSet? get() = @@ -97,7 +97,18 @@ internal abstract class KotlinSourceSetProcessor>( else null } - private fun registerKotlinCompileTask(): TaskProvider { + private val defaultKotlinDestinationDir: File + get() { + val kotlinExt = project.kotlinExtension + val targetSubDirectory = + if (kotlinExt is KotlinSingleJavaTargetExtension) + "" // In single-target projects, don't add the target name part to this path + else + kotlinCompilation.target.disambiguationClassifier?.let { "$it/" }.orEmpty() + return File(project.buildDir, "classes/kotlin/$targetSubDirectory${kotlinCompilation.compilationName}") + } + + protected fun registerKotlinCompileTask(): TaskProvider { val name = kotlinCompilation.compileKotlinTaskName logger.kotlinDebug("Creating kotlin compile task $name") @@ -347,18 +358,18 @@ internal class KotlinJsIrSourceSetProcessor( listOf( compilation.productionCompileTaskName, compilation.developmentCompileTaskName - ).forEach { taskName -> - doRegisterTask( - project, + ).map { taskName -> + registerKotlinCompileTask( taskName - ) { - it.description = taskDescription - it.mapClasspath { kotlinCompilation.compileDependencyFiles } + ) + }.forEach { task -> + task.configure { + it.dependsOn(kotlinTask) } } // outputFile can be set later during the configuration phase, get it only after the phase: - project.runOnceAfterEvaluated("Kotlin2JsSourceSetProcessor.doTargetSpecificProcessing", kotlinTask) { + project.runOnceAfterEvaluated("KotlinJsIrSourceSetProcessor.doTargetSpecificProcessing", kotlinTask) { val kotlinTaskInstance = kotlinTask.get() kotlinTaskInstance.kotlinOptions.outputFile = kotlinTaskInstance.outputFile.absolutePath val outputDir = kotlinTaskInstance.outputFile.parentFile diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt index 60fe60ff633..343875139b8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt @@ -151,7 +151,6 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : disambiguateCamelCased( buildVariant.name, WEBPACK_TASK_NAME - ) ) { it.dependsOn( diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt index ef09a536e09..b6586d4a572 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt @@ -58,7 +58,7 @@ abstract class KotlinJsIrSubTarget( } override fun produceJs() { - produceByFlags(PRODUCE_UNZIPPED_KLIB, PRODUCE_JS) + produceByFlags(PRODUCE_UNZIPPED_KLIB) configureMain() } @@ -66,7 +66,6 @@ abstract class KotlinJsIrSubTarget( private fun produceByFlags(vararg flags: String) { configure() - target.compilations .matching { it.name == KotlinCompilation.TEST_COMPILATION_NAME } .all {