From f7b660b5736f7e41dd27f98dd8c0a4fa45cc535c Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Fri, 19 Jun 2020 12:19:19 +0300 Subject: [PATCH] (minor) Fixes for review KT-MR-1290 --- .../kotlin/allopen/gradle/AllOpenSubplugin.kt | 8 ++++---- .../kotlin/gradle/plugin/KotlinGradleSubplugin.kt | 3 ++- .../internal/kapt/Kapt3KotlinGradleSubplugin.kt | 12 ++++++------ .../kotlin/gradle/plugin/KotlinTargetConfigurator.kt | 4 +++- .../gradle/plugin/mpp/KotlinMultiplatformPlugin.kt | 7 ++++--- .../kotlin/gradle/plugin/mpp/kotlinCompilations.kt | 10 +--------- .../gradle/targets/js/KotlinJsTargetConfigurator.kt | 10 +++++++--- .../metadata/KotlinMetadataTargetConfigurator.kt | 4 +--- .../gradle/targets/native/DefaultCInteropSettings.kt | 8 ++++++-- .../native/cocoapods/KotlinCocoapodsPlugin.kt | 2 +- .../gradle/targets/native/tasks/KotlinNativeTasks.kt | 2 +- .../kotlin/gradle/utils/providerApiUtils.kt | 2 +- .../jetbrains/kotlin/noarg/gradle/NoArgSubplugin.kt | 4 ++-- .../kotlin/noarg/gradle/SamWithReceiverSubplugin.kt | 8 ++++---- 14 files changed, 43 insertions(+), 41 deletions(-) diff --git a/libraries/tools/kotlin-allopen/src/main/kotlin/org/jetbrains/kotlin/allopen/gradle/AllOpenSubplugin.kt b/libraries/tools/kotlin-allopen/src/main/kotlin/org/jetbrains/kotlin/allopen/gradle/AllOpenSubplugin.kt index 7b038ef6629..87ac25ebfd6 100644 --- a/libraries/tools/kotlin-allopen/src/main/kotlin/org/jetbrains/kotlin/allopen/gradle/AllOpenSubplugin.kt +++ b/libraries/tools/kotlin-allopen/src/main/kotlin/org/jetbrains/kotlin/allopen/gradle/AllOpenSubplugin.kt @@ -32,12 +32,12 @@ class AllOpenGradleSubplugin @Inject internal constructor(private val registry: private const val ALLOPEN_ARTIFACT_NAME = "kotlin-allopen" - private val ANNOTATION_ARG_NAME = "annotation" - private val PRESET_ARG_NAME = "preset" + private const val ANNOTATION_ARG_NAME = "annotation" + private const val PRESET_ARG_NAME = "preset" } - override fun apply(project: Project) { - project.extensions.create("allOpen", AllOpenExtension::class.java) + override fun apply(target: Project) { + target.extensions.create("allOpen", AllOpenExtension::class.java) registry.register(AllOpenModelBuilder()) } diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt index 17215fac0a1..cae57b22c46 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt @@ -68,7 +68,8 @@ open class InternalSubpluginOption(key: String, value: String) : SubpluginOption // Deprecated because most calls require the tasks to be instantiated, which is not compatible with Gradle task configuration avoidance. @Deprecated( message = "This interface will be removed due to performance considerations. " + - "Please use the KotlinCompilerPluginSupportPlugin interface instead.", + "Please use the KotlinCompilerPluginSupportPlugin interface instead " + + "and remove the META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin entry.", replaceWith = ReplaceWith("KotlinCompilerPluginSupportPlugin") ) interface KotlinGradleSubplugin { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt index 48e3b7d35b7..fc361d764a5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt @@ -43,13 +43,13 @@ import javax.inject.Inject class Kapt3GradleSubplugin @Inject internal constructor(private val registry: ToolingModelBuilderRegistry) : KotlinCompilerPluginSupportPlugin { - override fun apply(project: Project) { - project.extensions.create("kapt", KaptExtension::class.java) + override fun apply(target: Project) { + target.extensions.create("kapt", KaptExtension::class.java) - project.configurations.create(KAPT_WORKER_DEPENDENCIES_CONFIGURATION_NAME).apply { - project.getKotlinPluginVersion()?.let { kotlinPluginVersion -> + target.configurations.create(KAPT_WORKER_DEPENDENCIES_CONFIGURATION_NAME).apply { + target.getKotlinPluginVersion()?.let { kotlinPluginVersion -> val kaptDependency = getPluginArtifact().run { "$groupId:$artifactId:$kotlinPluginVersion" } - dependencies.add(project.dependencies.create(kaptDependency)) + dependencies.add(target.dependencies.create(kaptDependency)) } ?: throw GradleException("Kotlin plugin should be enabled before 'kotlin-kapt'") } @@ -482,7 +482,7 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To } } - if (taskClass == KaptWithKotlincTask::class.java) { + if (KaptWithKotlincTask::class.java.isAssignableFrom(taskClass)) { val subpluginOptions = buildOptions("apt", dslJavacOptions) registerSubpluginOptions(kaptTaskProvider, subpluginOptions) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 0c05a92a29c..57639760547 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -33,6 +33,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget +import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask +import org.jetbrains.kotlin.gradle.tasks.locateTask import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.tasks.withType import org.jetbrains.kotlin.gradle.utils.COMPILE @@ -130,7 +132,7 @@ abstract class AbstractKotlinTargetConfigurator ) { val project = compilation.target.project - project.registerTask(compilation.processResourcesTaskName) { resourcesTask -> + project.locateOrRegisterTask(compilation.processResourcesTaskName) { resourcesTask -> resourcesTask.description = "Processes $resourceSet." DslObject(resourcesTask).conventionMapping.map("destinationDir") { project.file(compilation.output.resourcesDir) } resourcesTask.from(resourceSet) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt index 3e503b7f7b1..6891f0603bc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt @@ -37,6 +37,8 @@ import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled +import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask +import org.jetbrains.kotlin.gradle.tasks.locateTask import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.tasks.withType import org.jetbrains.kotlin.gradle.utils.* @@ -351,9 +353,8 @@ internal fun sourcesJarTask( ): TaskProvider { val taskName = lowerCamelCaseName(componentName, "sourcesJar") - project.tasks.withType().run { - if (taskName in names) - return named(taskName) + project.locateTask(taskName)?.let { + return it } val result = project.registerTask(taskName) { sourcesJar -> 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 2286cc8575f..2fce70660ad 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 @@ -99,16 +99,8 @@ abstract class AbstractKotlinCompilation( }) } - // Note! Invocation of withType-all results in preliminary task instantiation. - // After fix of this issue the following code should be uncommented: -// if (useLazyTaskConfiguration) { -// (target.project.tasks.named(compileKotlinTaskName) as TaskProvider>).configure { -// it.configureAction() -// } -// } - target.project.tasks - // To configure a task that may have not yet been created at this point, use 'withType-matching-all`: + // To configure a task that may have not yet been created at this point, use 'withType-matching-configureEach`: .withType(AbstractKotlinCompile::class.java) .matching { it.name == compileKotlinTaskName } .configureEach { compileKotlinTask -> diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt index b4b5dea448d..3703275e4e4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle.targets.js import org.gradle.api.DefaultTask +import org.gradle.api.Task import org.gradle.api.attributes.Usage import org.gradle.language.base.plugins.LifecycleBasePlugin import org.jetbrains.kotlin.gradle.dsl.kotlinExtension @@ -13,6 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider +import org.jetbrains.kotlin.gradle.tasks.locateTask import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry import org.jetbrains.kotlin.gradle.testing.testTaskName @@ -75,10 +77,12 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) : compilation.output.classesDirs.from(project.files().builtBy(compilation.compileAllTaskName)) - val compileAllTask = project.tasks.findByPath(compilation.compileAllTaskName) + val compileAllTask = project.locateTask(compilation.compileAllTaskName) if (compileAllTask != null) { - compileAllTask.dependsOn(compilation.compileKotlinTaskName) - compileAllTask.dependsOn(compilation.processResourcesTaskName) + compileAllTask.configure { + it.dependsOn(compilation.compileKotlinTaskName) + it.dependsOn(compilation.processResourcesTaskName) + } } else { project.registerTask(compilation.compileAllTaskName) { it.group = LifecycleBasePlugin.BUILD_GROUP 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 8a862f043eb..8b60a1368f0 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 @@ -196,9 +196,7 @@ class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) : val generateMetadata = project.createGenerateProjectStructureMetadataTask() allMetadataJar.configure { - it.from( - project.files(Callable { generateMetadata.get().resultXmlFile }).builtBy(generateMetadata) - ) { spec -> + it.from(generateMetadata.map { it.resultXmlFile }) { spec -> spec.into("META-INF").rename { MULTIPLATFORM_PROJECT_METADATA_FILE_NAME } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/DefaultCInteropSettings.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/DefaultCInteropSettings.kt index 763d581df16..2591318df39 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/DefaultCInteropSettings.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/DefaultCInteropSettings.kt @@ -57,9 +57,13 @@ open class DefaultCInteropSettings @Inject constructor( target.disambiguationClassifier ) - val defFile: Property = project.objects.property(File::class.java) + val defFileProperty: Property = project.objects.property(File::class.java) .apply { set(project.projectDir.resolve("src/nativeInterop/cinterop/$name.def")) } + var defFile: File + get() = defFileProperty.get() + set(value) { defFileProperty.set(value) } + var packageName: String? = null val compilerOpts = mutableListOf() @@ -72,7 +76,7 @@ open class DefaultCInteropSettings @Inject constructor( // DSL methods. override fun defFile(file: Any) { - defFile.set(project.file(file)) + defFileProperty.set(project.file(file)) } override fun packageName(value: String) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt index 8a43fcf026f..d566ffb1909 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt @@ -195,7 +195,7 @@ open class KotlinCocoapodsPlugin : Plugin { interopTask.dependsOn(defTask) - interop.defFile.set(defTask.map { it.outputFile }) + interop.defFileProperty.set(defTask.map { it.outputFile }) interop.packageName = "cocoapods.${pod.moduleName}" diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index 1278a75241f..8281d6b3db6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -951,7 +951,7 @@ open class CInteropProcess : DefaultTask() { project.provider { destinationDir.get().resolve(outputFileName) } val defFile: File - @InputFile get() = settings.defFile.get() + @InputFile get() = settings.defFileProperty.get() val packageName: String? @Optional @Input get() = settings.packageName diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt index bd5605ffded..c4930890707 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt @@ -45,7 +45,7 @@ internal fun Project.newFileProperty(initialize: (() -> File)? = null): RegularF return regularFileProperty.apply { if (initialize != null) { - set(provider { RegularFile(initialize) }) + set(project.layout.file(project.provider(initialize))) } } } \ No newline at end of file diff --git a/libraries/tools/kotlin-noarg/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/NoArgSubplugin.kt b/libraries/tools/kotlin-noarg/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/NoArgSubplugin.kt index 05ec762cc2a..6eb127fa915 100644 --- a/libraries/tools/kotlin-noarg/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/NoArgSubplugin.kt +++ b/libraries/tools/kotlin-noarg/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/NoArgSubplugin.kt @@ -38,8 +38,8 @@ class NoArgGradleSubplugin @Inject internal constructor(private val registry: To private const val INVOKE_INITIALIZERS_ARG_NAME = "invokeInitializers" } - override fun apply(project: Project) { - project.extensions.create("noArg", NoArgExtension::class.java) + override fun apply(target: Project) { + target.extensions.create("noArg", NoArgExtension::class.java) registry.register(NoArgModelBuilder()) } diff --git a/libraries/tools/kotlin-sam-with-receiver/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/SamWithReceiverSubplugin.kt b/libraries/tools/kotlin-sam-with-receiver/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/SamWithReceiverSubplugin.kt index 9dde8375484..8716c43cd75 100644 --- a/libraries/tools/kotlin-sam-with-receiver/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/SamWithReceiverSubplugin.kt +++ b/libraries/tools/kotlin-sam-with-receiver/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/SamWithReceiverSubplugin.kt @@ -24,16 +24,16 @@ import org.jetbrains.kotlin.noarg.gradle.model.builder.SamWithReceiverModelBuild import javax.inject.Inject class SamWithReceiverGradleSubplugin @Inject internal constructor(private val registry: ToolingModelBuilderRegistry) : KotlinCompilerPluginSupportPlugin { - override fun apply(project: Project) { - project.extensions.create("samWithReceiver", SamWithReceiverExtension::class.java) + override fun apply(target: Project) { + target.extensions.create("samWithReceiver", SamWithReceiverExtension::class.java) registry.register(SamWithReceiverModelBuilder()) } companion object { const val SAM_WITH_RECEIVER_ARTIFACT_NAME = "kotlin-sam-with-receiver" - private val ANNOTATION_ARG_NAME = "annotation" - private val PRESET_ARG_NAME = "preset" + private const val ANNOTATION_ARG_NAME = "annotation" + private const val PRESET_ARG_NAME = "preset" } override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean = true