diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index 28b11bed489..3566ad7ba73 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -337,6 +337,19 @@ open class KotlinAndroid36GradleIT : KotlinAndroid33GradleIT() { assertTasksExecuted(lintTask) // Check that the lint task ran successfully, KT-27170 } } + + @Test + fun testJvmWithJava() = with(Project("mppJvmWithJava")) { + setupWorkingDir() + + build("build") { + assertSuccessful() + } + + build("assemble") { + assertSuccessful() + } + } } open class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT() { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/build.gradle new file mode 100644 index 00000000000..574930cda62 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/build.gradle @@ -0,0 +1,41 @@ +apply plugin: 'kotlin-multiplatform' +apply plugin: 'maven-publish' + +buildscript { + repositories { + mavenLocal() + google() + jcenter() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "com.android.tools.build:gradle:$android_tools_version" + } +} + +repositories { + mavenLocal() + google() + jcenter() +} + +kotlin { + jvm("jvmWithJava") { + withJava() + + compilations.all { + kotlinOptions.jvmTarget = "1.8" + } + } + +} + + +allprojects { + repositories { + mavenLocal() + google() + jcenter() + } +} + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/gradle.properties new file mode 100644 index 00000000000..85919925127 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/gradle.properties @@ -0,0 +1,5 @@ +#kotlin_version = 1.4.255-SNAPSHOT +#android_tools_version = 3.6.0 + +org.gradle.paralllel=true +kotlin.parallel.tasks.in.project=true diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/settings.gradle new file mode 100644 index 00000000000..e69de29bb2d diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/src/jvmWithJavaMain/kotlin/jvmWithJavaData/SomeJVMWithJavaClass.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/src/jvmWithJavaMain/kotlin/jvmWithJavaData/SomeJVMWithJavaClass.kt new file mode 100644 index 00000000000..a5a500cb150 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mppJvmWithJava/src/jvmWithJavaMain/kotlin/jvmWithJavaData/SomeJVMWithJavaClass.kt @@ -0,0 +1,4 @@ +package jvmWithJavaData + +class SomeJVMWithJavaClass { +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt index 04e8f18e33c..d0706b9f030 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.compilerRunner import org.gradle.api.Project +import org.gradle.api.UnknownTaskException import org.gradle.api.invocation.Gradle import org.gradle.api.logging.Logger import org.gradle.api.plugins.JavaPluginConvention @@ -235,8 +236,14 @@ internal open class GradleCompilerRunner(protected val taskProvider: GradleCompi if (compilation.isMain()) { if (isMultiplatformProject) { - project.locateTask(target.artifactsTaskName)?.configure { jarTask -> - jarToModule[jarTask.archivePathCompatible.canonicalFile] = module + try { + //It could cause task reconfiguration. TODO: fix it some day if need + // But using project.locateTask(taskName).configure cause an Exception for call from ImmutableActionSet + + val archiveTask = project.tasks.getByName(target.artifactsTaskName) as AbstractArchiveTask + jarToModule[archiveTask.archivePathCompatible.canonicalFile] = module + } catch (e: UnknownTaskException) { + //ignore not found task } } else { if (target is KotlinWithJavaTarget<*>) {