diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt index 07b96b910e2..b08bf567239 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt @@ -11,6 +11,7 @@ import org.gradle.api.attributes.AttributeContainer import org.gradle.api.attributes.HasAttributes import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection +import org.gradle.api.tasks.TaskProvider import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions import org.jetbrains.kotlin.gradle.dsl.KotlinCompile @@ -52,6 +53,8 @@ interface KotlinCompilation : Named, HasAttributes, val compileKotlinTask: KotlinCompile + val compileKotlinTaskProvider: TaskProvider> + val kotlinOptions: T fun kotlinOptions(configure: T.() -> Unit) 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 ad6402d130e..b03b1a74363 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 @@ -52,9 +52,10 @@ abstract class AbstractKotlinCompilation( @Suppress("UNCHECKED_CAST") override val compileKotlinTask: KotlinCompile - get() = (target.project.tasks.getByName(compileKotlinTaskName) as KotlinCompile) + get() = compileKotlinTaskProvider.get() - val compileKotlinTaskHolder: TaskProvider> + @Suppress("UNCHECKED_CAST") + override val compileKotlinTaskProvider: TaskProvider> get() = target.project.locateTask(compileKotlinTaskName)!! // Don't declare this property in the constructor to avoid NPE diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt index 9e203d6f9a3..be89ab60065 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt @@ -8,6 +8,7 @@ // Old package for compatibility package org.jetbrains.kotlin.gradle.plugin.mpp +import org.gradle.api.tasks.TaskProvider import org.gradle.util.WrapUtil import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation @@ -49,6 +50,10 @@ open class KotlinJsCompilation( override val compileKotlinTask: Kotlin2JsCompile get() = super.compileKotlinTask as Kotlin2JsCompile + @Suppress("UNCHECKED_CAST") + override val compileKotlinTaskProvider: TaskProvider + get() = super.compileKotlinTaskProvider as TaskProvider + internal val packageJsonHandlers = mutableListOf Unit>() @Suppress("unused") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmAndroidCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmAndroidCompilation.kt index fa16bb328d3..fd762caa4bb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmAndroidCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmAndroidCompilation.kt @@ -23,6 +23,11 @@ import org.jetbrains.kotlin.gradle.plugin.getTestedVariantData override val compileKotlinTask: org.jetbrains.kotlin.gradle.tasks.KotlinCompile get() = super.compileKotlinTask as org.jetbrains.kotlin.gradle.tasks.KotlinCompile + @Suppress("UNCHECKED_CAST") + override val compileKotlinTaskProvider: TaskProvider + get() = super.compileKotlinTaskProvider as TaskProvider + + @Suppress("UnstableApiUsage") internal val testedVariantArtifacts: Property = target.project.objects.property(FileCollection::class.java) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmCompilation.kt index 988433a62b5..1cf6237f5d8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmCompilation.kt @@ -17,6 +17,10 @@ open class KotlinJvmCompilation( override val processResourcesTaskName: String get() = disambiguateName("processResources") + @Suppress("UNCHECKED_CAST") + override val compileKotlinTaskProvider: TaskProvider + get() = super.compileKotlinTaskProvider as TaskProvider + override val compileKotlinTask: org.jetbrains.kotlin.gradle.tasks.KotlinCompile get() = super.compileKotlinTask as org.jetbrains.kotlin.gradle.tasks.KotlinCompile } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index e57061e2a41..9076ba1b253 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -76,7 +76,7 @@ class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) : // Clear the dependencies of the compilation so that they don't take time resolving during task graph construction: compileDependencyFiles = target.project.files() } - compileKotlinTaskHolder.configure { it.onlyIf { target.project.isCompatibilityMetadataVariantEnabled } } + compileKotlinTaskProvider.configure { it.onlyIf { target.project.isCompatibilityMetadataVariantEnabled } } } createMergedAllSourceSetsConfigurations(target) @@ -280,7 +280,7 @@ class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) : } else { if (platformCompilations.filterIsInstance().none { it.konanTarget.enabledOnCurrentHost }) { // Then we don't have any platform module to put this compiled source set to, so disable the compilation task: - compileKotlinTaskHolder.configure { it.enabled = false } + compileKotlinTaskProvider.configure { it.enabled = false } // Also clear the dependency files (classpath) of the compilation so that the host-specific dependencies are // not resolved: compileDependencyFiles = project.files() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt index 25c2ded2f28..8eab75fed39 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt @@ -13,6 +13,7 @@ import org.gradle.api.Project import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet +import org.gradle.api.tasks.TaskProvider import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation @@ -23,7 +24,6 @@ import org.jetbrains.kotlin.gradle.plugin.sources.getSourceSetHierarchy import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssociateCompilations import org.jetbrains.kotlin.gradle.targets.metadata.getMetadataCompilationForSourceSet import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile -import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.KonanTarget @@ -42,6 +42,10 @@ abstract class AbstractKotlinNativeCompilation( get() = super.compileKotlinTask as KotlinNativeCompile // A collection containing all source sets used by this compilation + @Suppress("UNCHECKED_CAST") + override val compileKotlinTaskProvider: TaskProvider + get() = super.compileKotlinTaskProvider as TaskProvider + // (taking into account dependencies between source sets). Used by both compilation // and linking tasks. Unlike kotlinSourceSets, includes dependency source sets. // TODO: Move into the compilation task when the linking task does klib linking instead of compilation. diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/SourceSetVisibilityInferenceTest.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/SourceSetVisibilityInferenceTest.kt index d7dc4226f5c..9c240cdd24c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/SourceSetVisibilityInferenceTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/SourceSetVisibilityInferenceTest.kt @@ -9,6 +9,7 @@ import groovy.lang.Closure import org.gradle.api.attributes.AttributeContainer import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet +import org.gradle.api.tasks.TaskProvider import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions import org.jetbrains.kotlin.gradle.dsl.KotlinCompile import org.jetbrains.kotlin.gradle.plugin.* @@ -297,7 +298,7 @@ class MockKotlinCompilation( //region Not implemented override val target: KotlinTarget get() = throw UnsupportedOperationException() - + override val compileKotlinTaskProvider: TaskProvider> get() = throw UnsupportedOperationException() override fun getAttributes(): AttributeContainer = throw UnsupportedOperationException() override fun dependencies(configure: KotlinDependencyHandler.() -> Unit) = throw UnsupportedOperationException() override fun dependencies(configureClosure: Closure) = throw UnsupportedOperationException()