diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index 710aa8c18a8..b92cbd2e50d 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -37,6 +37,7 @@ class KotlinGradleIT: BaseGradleIT() { project.build("build") { assertSuccessful() + assertFileExists("build/classes/main/META-INF/kotlinProject_main.kotlin_module") assertReportExists() assertContains(":compileKotlin", ":compileTestKotlin") } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProject/src/main/kotlin/dummyUtil.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProject/src/main/kotlin/dummyUtil.kt new file mode 100644 index 00000000000..2bf9f3e293a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProject/src/main/kotlin/dummyUtil.kt @@ -0,0 +1,3 @@ +package demo + +fun dummyFun() {} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AnnotationProcessingManager.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AnnotationProcessingManager.kt index 459fa7c315c..608155fb439 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AnnotationProcessingManager.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AnnotationProcessingManager.kt @@ -106,17 +106,14 @@ private fun Project.createKotlinAfterJavaTask( kotlinOptions: KotlinJvmOptionsImpl?, tasksProvider: KotlinTasksProvider ): KotlinCompile { - val kotlinAfterJavaTask = with (tasksProvider.createKotlinJVMTask(this, kotlinTask.name + KOTLIN_AFTER_JAVA_TASK_SUFFIX)) { + val kotlinAfterJavaTask = with (tasksProvider.createKotlinJVMTask(this, kotlinTask.name + KOTLIN_AFTER_JAVA_TASK_SUFFIX, kotlinTask.sourceSetName)) { mapClasspath { kotlinTask.classpath } this } kotlinAfterJavaTask.dependsOn(javaTask) javaTask.finalizedByIfNotFailed(kotlinAfterJavaTask) - - kotlinAfterJavaTask.moduleName = kotlinTask.moduleName kotlinAfterJavaTask.parentKotlinOptionsImpl = kotlinOptions - return kotlinAfterJavaTask } 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 0606124817a..62bdb2019d8 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 @@ -82,7 +82,6 @@ internal abstract class KotlinSourceSetProcessor>( logger.kotlinDebug("Creating kotlin compile task $name") val kotlinCompile = doCreateTask(project, name) kotlinCompile.description = taskDescription - kotlinCompile.moduleName = "${project.name}-$name" kotlinCompile.mapClasspath { sourceSet.compileClasspath } kotlinCompile.destinationDir = defaultKotlinDestinationDir return kotlinCompile @@ -109,7 +108,7 @@ internal class Kotlin2JvmSourceSetProcessor( get() = File(project.buildDir, "kotlin-classes/$sourceSetName") override fun doCreateTask(project: Project, taskName: String): KotlinCompile = - tasksProvider.createKotlinJVMTask(project, taskName) + tasksProvider.createKotlinJVMTask(project, taskName, sourceSet.name) override fun doTargetSpecificProcessing() { val aptConfiguration = project.createAptConfiguration(sourceSet.name, kotlinPluginVersion) @@ -185,7 +184,7 @@ internal class Kotlin2JsSourceSetProcessor( private val build = project.tasks.findByName("build") override fun doCreateTask(project: Project, taskName: String): Kotlin2JsCompile = - tasksProvider.createKotlinJSTask(project, taskName) + tasksProvider.createKotlinJSTask(project, taskName, sourceSet.name) override fun doTargetSpecificProcessing() { val taskName = kotlinTask.name @@ -332,7 +331,7 @@ internal open class KotlinAndroidPlugin( val kotlinTaskName = "compile${variantDataName.capitalize()}Kotlin" // todo: Investigate possibility of creating and configuring kotlinTask before evaluation - val kotlinTask = tasksProvider.createKotlinJVMTask(project, kotlinTaskName) + val kotlinTask = tasksProvider.createKotlinJVMTask(project, kotlinTaskName, variantData.name) kotlinTask.parentKotlinOptionsImpl = rootKotlinOptions // store kotlin classes in separate directory. They will serve as class-path to java compiler diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index e3cf42ada8b..c817e3618b5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -5,6 +5,7 @@ import org.codehaus.groovy.runtime.MethodClosure import org.gradle.api.GradleException import org.gradle.api.file.SourceDirectorySet import org.gradle.api.logging.Logger +import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceTask import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.compile.AbstractCompile @@ -40,6 +41,7 @@ import org.jetbrains.kotlin.progress.CompilationCanceledStatus import org.jetbrains.kotlin.utils.LibraryUtils import java.io.File import java.util.* +import kotlin.properties.Delegates const val ANNOTATIONS_PLUGIN_NAME = "org.jetbrains.kotlin.kapt" const val KOTLIN_BUILD_DIR_NAME = "kotlin" @@ -68,7 +70,9 @@ abstract class AbstractKotlinCompile() : AbstractCo internal var anyClassesCompiled: Boolean = false internal var friendTaskName: String? = null internal var javaOutputDir: File? = null - internal var moduleName: String = "${project.name}-${this.name}" + internal var sourceSetName: String by Delegates.notNull() + protected val moduleName: String + get() = "${project.name}_$sourceSetName" override fun compile() { assert(false, { "unexpected call to compile()" }) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt index efd5fce84a9..58b2135d4f6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt @@ -1,20 +1,22 @@ package org.jetbrains.kotlin.gradle.tasks import org.gradle.api.Project +import org.gradle.api.tasks.SourceSet import org.jetbrains.kotlin.gradle.plugin.RegexTaskToFriendTaskMapper import org.jetbrains.kotlin.gradle.plugin.TaskToFriendTaskMapper import org.jetbrains.kotlin.gradle.plugin.mapKotlinTaskProperties internal open class KotlinTasksProvider { - fun createKotlinJVMTask(project: Project, name: String): KotlinCompile { + fun createKotlinJVMTask(project: Project, name: String, sourceSetName: String): KotlinCompile { return project.tasks.create(name, KotlinCompile::class.java).apply { + this.sourceSetName = sourceSetName friendTaskName = taskToFriendTaskMapper[this] mapKotlinTaskProperties(project, this) outputs.upToDateWhen { isCacheFormatUpToDate } } } - fun createKotlinJSTask(project: Project, name: String): Kotlin2JsCompile = + fun createKotlinJSTask(project: Project, name: String, sourceSetName: String): Kotlin2JsCompile = project.tasks.create(name, Kotlin2JsCompile::class.java) protected open val taskToFriendTaskMapper: TaskToFriendTaskMapper = diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/gradleCacheVersion.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/gradleCacheVersion.kt index 44aad26cec9..91a6c831e4c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/gradleCacheVersion.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/gradleCacheVersion.kt @@ -4,7 +4,7 @@ import org.jetbrains.kotlin.config.IncrementalCompilation import org.jetbrains.kotlin.incremental.CacheVersion import java.io.File -internal const val GRADLE_CACHE_VERSION = 1 +internal const val GRADLE_CACHE_VERSION = 2 internal const val GRADLE_CACHE_VERSION_FILE_NAME = "gradle-format-version.txt" internal fun gradleCacheVersion(dataRoot: File): CacheVersion =