From 8e8a8f7b8efb3edb53d109570f1f8e1df13fde78 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Fri, 14 Oct 2022 13:01:15 +0200 Subject: [PATCH] [Gradle] Move deprecated configurations into KotlinCompilationConfigurationsContainer ^KT-54312 Verification Pending --- .../gradle/plugin/AbstractKotlinPlugin.kt | 1 - .../gradle/plugin/KotlinTargetConfigurator.kt | 111 ++---------------- ...otlinCompilationConfigurationsContainer.kt | 4 + ...pilationDependencyConfigurationsFactory.kt | 31 +++++ .../targets/android/AndroidProjectHandler.kt | 2 - .../targets/js/KotlinJsTargetConfigurator.kt | 2 - .../gradle/targets/jvm/KotlinJvmTarget.kt | 5 +- 7 files changed, 45 insertions(+), 111 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt index 74367f0539f..2abcc7e9ebb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt @@ -251,7 +251,6 @@ internal abstract class AbstractKotlinPlugin( buildSourceSetProcessor: (KotlinCompilation<*>) -> KotlinSourceSetProcessor<*> ) { kotlinTarget.compilations.all { compilation -> - AbstractKotlinTargetConfigurator.defineConfigurationsForCompilation(compilation) buildSourceSetProcessor(compilation).run() } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 507bf1c0ded..4af920e34bf 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -105,8 +105,6 @@ abstract class AbstractKotlinTargetConfigurator val project = target.project target.compilations.all { compilation -> - defineConfigurationsForCompilation(compilation) - compilation.internal.processResourcesTaskName?.let { processResourcesTaskName -> configureResourceProcessing( compilation, processResourcesTaskName, project.files(Callable { compilation.allKotlinSourceSets.map { it.resources } }) @@ -161,7 +159,7 @@ abstract class AbstractKotlinTargetConfigurator val mainCompilation = target.compilations.maybeCreate(KotlinCompilation.MAIN_COMPILATION_NAME) - val compileConfiguration = configurations.findByName(mainCompilation.deprecatedCompileConfigurationName) + val compileConfiguration = mainCompilation.internal.configurations.deprecatedCompileConfiguration val implementationConfiguration = configurations.maybeCreate(mainCompilation.implementationConfigurationName) val runtimeOnlyConfiguration = when (mainCompilation) { @@ -178,7 +176,7 @@ abstract class AbstractKotlinTargetConfigurator attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) extendsFrom(configurations.maybeCreate(mainCompilation.apiConfigurationName)) if (mainCompilation is KotlinCompilationToRunnableFiles) { - val runtimeConfiguration = configurations.findByName(mainCompilation.deprecatedRuntimeConfigurationName) + val runtimeConfiguration = mainCompilation.internal.configurations.deprecatedRuntimeConfiguration runtimeConfiguration?.let { extendsFrom(it) } } usesPlatformOf(target) @@ -192,7 +190,7 @@ abstract class AbstractKotlinTargetConfigurator isCanBeResolved = false attributes.attribute(USAGE_ATTRIBUTE, KotlinUsages.producerRuntimeUsage(target)) attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) - val runtimeConfiguration = configurations.findByName(mainCompilation.deprecatedRuntimeConfigurationName) + val runtimeConfiguration = mainCompilation.internal.configurations.deprecatedRuntimeConfiguration extendsFrom(implementationConfiguration) if (runtimeOnlyConfiguration != null) extendsFrom(runtimeOnlyConfiguration) @@ -203,7 +201,7 @@ abstract class AbstractKotlinTargetConfigurator if (createTestCompilation) { val testCompilation = target.compilations.getByName(KotlinCompilation.TEST_COMPILATION_NAME) - val compileTestsConfiguration = configurations.findByName(testCompilation.deprecatedCompileConfigurationName) + val compileTestsConfiguration = testCompilation.internal.configurations.deprecatedCompileConfiguration val testImplementationConfiguration = configurations.maybeCreate(testCompilation.implementationConfigurationName) val testRuntimeOnlyConfiguration = when (testCompilation) { is KotlinCompilationToRunnableFiles<*> -> configurations.maybeCreate(testCompilation.runtimeOnlyConfigurationName) @@ -215,8 +213,8 @@ abstract class AbstractKotlinTargetConfigurator testRuntimeOnlyConfiguration?.extendsFrom(runtimeOnlyConfiguration) if (mainCompilation is KotlinCompilationToRunnableFiles && testCompilation is KotlinCompilationToRunnableFiles) { - val runtimeConfiguration = configurations.findByName(mainCompilation.deprecatedRuntimeConfigurationName) - val testRuntimeConfiguration = configurations.findByName(testCompilation.deprecatedRuntimeConfigurationName) + val runtimeConfiguration = mainCompilation.internal.configurations.deprecatedRuntimeConfiguration + val testRuntimeConfiguration = testCompilation.internal.configurations.deprecatedRuntimeConfiguration runtimeConfiguration?.let { testRuntimeConfiguration?.extendsFrom(it) } } } @@ -265,104 +263,9 @@ abstract class AbstractKotlinTargetConfigurator companion object { const val testTaskNameSuffix = "test" const val runTaskNameSuffix = "run" - - fun defineConfigurationsForCompilation( - compilation: KotlinCompilation<*> - ) { - val project = compilation.target.project - val target = compilation.target - val configurations = target.project.configurations - - val compileConfiguration = configurations.findByName(compilation.deprecatedCompileConfigurationName)?.apply { - isCanBeConsumed = false - setupAsLocalTargetSpecificConfigurationIfSupported(target) - isVisible = false - isCanBeResolved = false - description = "Dependencies for $compilation (deprecated, use '${compilation.implementationConfigurationName} ' instead)." - } - - val apiConfiguration = configurations.maybeCreate(compilation.apiConfigurationName).apply { - compileConfiguration?.let { extendsFrom(it) } - - // TODP NOW: Remove duplicate - isVisible = false - isCanBeConsumed = false - isCanBeResolved = false - description = "API dependencies for $compilation." - } - - val implementationConfiguration = configurations.maybeCreate(compilation.implementationConfigurationName).apply { - extendsFrom(apiConfiguration) - compileConfiguration?.let { extendsFrom(it) } - isVisible = false - isCanBeConsumed = false - isCanBeResolved = false - description = "Implementation only dependencies for $compilation." - } - - val compileOnlyConfiguration = configurations.maybeCreate(compilation.compileOnlyConfigurationName).apply { - isCanBeConsumed = false - setupAsLocalTargetSpecificConfigurationIfSupported(target) - attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) - isVisible = false - isCanBeResolved = false - description = "Compile only dependencies for $compilation." - } - - configurations.maybeCreate(compilation.compileDependencyConfigurationName).apply { - extendsFrom(compileOnlyConfiguration, implementationConfiguration) - usesPlatformOf(target) - isVisible = false - isCanBeConsumed = false - attributes.attribute(USAGE_ATTRIBUTE, KotlinUsages.consumerApiUsage(compilation.target)) - if (compilation.platformType != KotlinPlatformType.androidJvm) { - attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) - } - description = "Compile classpath for $compilation." - } - - if (compilation is KotlinCompilationToRunnableFiles) { - val runtimeConfiguration = configurations.findByName(compilation.deprecatedRuntimeConfigurationName)?.apply { - isCanBeConsumed = false - setupAsLocalTargetSpecificConfigurationIfSupported(target) - compileConfiguration?.let { extendsFrom(it) } - isVisible = false - isCanBeResolved = false - description = - "Runtime dependencies for $compilation (deprecated, use '${compilation.runtimeOnlyConfigurationName} ' instead)." - } - - val runtimeOnlyConfiguration = configurations.maybeCreate(compilation.runtimeOnlyConfigurationName).apply { - isVisible = false - isCanBeConsumed = false - isCanBeResolved = false - description = "Runtime only dependencies for $compilation." - } - - configurations.maybeCreate(compilation.runtimeDependencyConfigurationName).apply { - extendsFrom(runtimeOnlyConfiguration, implementationConfiguration) - runtimeConfiguration?.let { extendsFrom(it) } - usesPlatformOf(target) - isVisible = false - isCanBeConsumed = false - isCanBeResolved = true - attributes.attribute(USAGE_ATTRIBUTE, KotlinUsages.consumerRuntimeUsage(compilation.target)) - if (compilation.platformType != KotlinPlatformType.androidJvm) { - attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) - } - description = "Runtime classpath of $compilation." - } - } - } } } -internal val KotlinCompilation<*>.deprecatedCompileConfigurationName: String - get() = disambiguateName(COMPILE) - -internal val KotlinCompilationToRunnableFiles<*>.deprecatedRuntimeConfigurationName: String - get() = disambiguateName(RUNTIME) - internal val KotlinTarget.testTaskName: String get() = lowerCamelCaseName(targetName, AbstractKotlinTargetConfigurator.testTaskNameSuffix) @@ -421,7 +324,7 @@ abstract class KotlinOnlyTargetConfigurator) { - val runtimeConfiguration = project.configurations.findByName(mainCompilation.deprecatedRuntimeConfigurationName) + val runtimeConfiguration = mainCompilation.internal.configurations.deprecatedRuntimeConfiguration val runtimeElementsConfiguration = project.configurations.getByName(target.runtimeElementsConfigurationName) runtimeConfiguration?.let { addJarIfNoArtifactsPresent(runtimeConfiguration, jarArtifact) } addJarIfNoArtifactsPresent(runtimeElementsConfiguration, jarArtifact) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationConfigurationsContainer.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationConfigurationsContainer.kt index 458fe6d937a..e2ce160e380 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationConfigurationsContainer.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationConfigurationsContainer.kt @@ -13,6 +13,8 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinDependencyHandler internal interface KotlinCompilationConfigurationsContainer { + val deprecatedCompileConfiguration: Configuration? + val deprecatedRuntimeConfiguration: Configuration? val apiConfiguration: Configuration val implementationConfiguration: Configuration val compileOnlyConfiguration: Configuration @@ -23,6 +25,8 @@ internal interface KotlinCompilationConfigurationsContainer { } internal class DefaultKotlinCompilationConfigurationsContainer( + override val deprecatedCompileConfiguration: Configuration?, + override val deprecatedRuntimeConfiguration: Configuration?, override val apiConfiguration: Configuration, override val implementationConfiguration: Configuration, override val compileOnlyConfiguration: Configuration, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/DefaultKotlinCompilationDependencyConfigurationsFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/DefaultKotlinCompilationDependencyConfigurationsFactory.kt index 4c259ac7d44..c9d8aed2ed4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/DefaultKotlinCompilationDependencyConfigurationsFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/DefaultKotlinCompilationDependencyConfigurationsFactory.kt @@ -129,7 +129,34 @@ private fun KotlinCompilationDependencyConfigurationsContainer( ): KotlinCompilationConfigurationsContainer { val compilationCoordinates = "${target.disambiguationClassifier}/$compilationName" + /* Support deprecated configurations */ + val deprecatedCompileConfiguration = target.project.configurations.findByName( + ConfigurationNaming.Default(target, compilationName).name(COMPILE) + )?.apply { + isCanBeConsumed = false + setupAsLocalTargetSpecificConfigurationIfSupported(target) + isVisible = false + isCanBeResolved = false + description = "Dependencies for $compilation (deprecated, use '${implementationConfigurationName} ' instead)." + } + + val deprecatedRuntimeConfiguration = if (withRuntime) target.project.configurations.findByName( + ConfigurationNaming.Default(target, compilationName).name(RUNTIME) + )?.apply { + isCanBeConsumed = false + setupAsLocalTargetSpecificConfigurationIfSupported(target) + deprecatedCompileConfiguration?.let { extendsFrom(it) } + isVisible = false + isCanBeResolved = false + description = + "Runtime dependencies for $compilation (deprecated, use '${runtimeOnlyConfigurationName} ' instead)." + } else null + + /* Actual configurations */ + val apiConfiguration = target.project.configurations.maybeCreate(apiConfigurationName).apply { + deprecatedCompileConfiguration?.let { extendsFrom(it) } + isVisible = false isCanBeConsumed = false isCanBeResolved = false @@ -138,6 +165,7 @@ private fun KotlinCompilationDependencyConfigurationsContainer( val implementationConfiguration = target.project.configurations.maybeCreate(implementationConfigurationName).apply { extendsFrom(apiConfiguration) + deprecatedCompileConfiguration?.let { extendsFrom(it) } isVisible = false isCanBeConsumed = false isCanBeResolved = false @@ -175,6 +203,7 @@ private fun KotlinCompilationDependencyConfigurationsContainer( val runtimeDependencyConfiguration = if (withRuntime) target.project.configurations.maybeCreate(runtimeClasspathConfigurationName).apply { extendsFrom(runtimeOnlyConfiguration, implementationConfiguration) + deprecatedRuntimeConfiguration?.let { extendsFrom(it) } usesPlatformOf(target) isVisible = false isCanBeConsumed = false @@ -202,6 +231,8 @@ private fun KotlinCompilationDependencyConfigurationsContainer( } return DefaultKotlinCompilationConfigurationsContainer( + deprecatedCompileConfiguration = deprecatedCompileConfiguration, + deprecatedRuntimeConfiguration = deprecatedRuntimeConfiguration, apiConfiguration = apiConfiguration, implementationConfiguration = implementationConfiguration, compileOnlyConfiguration = compileOnlyConfiguration, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/AndroidProjectHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/AndroidProjectHandler.kt index 38068470cce..6feb7fcc3b0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/AndroidProjectHandler.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/AndroidProjectHandler.kt @@ -341,8 +341,6 @@ internal class AndroidProjectHandler( fun setUpDependencyResolution(variant: BaseVariant, compilation: KotlinJvmAndroidCompilation) { val project = compilation.target.project - AbstractKotlinTargetConfigurator.defineConfigurationsForCompilation(compilation) - compilation.compileDependencyFiles = variant.compileConfiguration.apply { usesPlatformOf(compilation.target) project.addExtendsFromRelation(name, compilation.compileDependencyConfigurationName) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt index ae1b5c67be6..fc161135c6f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt @@ -61,8 +61,6 @@ open class KotlinJsTargetConfigurator : val project = target.project target.compilations.all { compilation -> - defineConfigurationsForCompilation(compilation) - compilation.source(compilation.defaultSourceSet) configureResourceProcessing( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt index 37c2ef48093..888b1e00f28 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget +import org.jetbrains.kotlin.gradle.plugin.mpp.internal import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.copyAttributes import org.jetbrains.kotlin.gradle.tasks.withType import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation @@ -160,7 +161,7 @@ abstract class KotlinJvmTarget @Inject constructor( compilation.apiConfigurationName, compilation.implementationConfigurationName, compilation.compileOnlyConfigurationName, - compilation.deprecatedCompileConfigurationName.takeIf { project.configurations.findByName(it) != null } + compilation.internal.configurations.deprecatedCompileConfiguration?.name, ).forEach { configurationName -> project.addExtendsFromRelation(javaSourceSet.compileClasspathConfigurationName, configurationName) } @@ -169,7 +170,7 @@ abstract class KotlinJvmTarget @Inject constructor( compilation.apiConfigurationName, compilation.implementationConfigurationName, compilation.runtimeOnlyConfigurationName, - compilation.deprecatedRuntimeConfigurationName.takeIf { project.configurations.findByName(it) != null } + compilation.internal.configurations.deprecatedRuntimeConfiguration?.name, ).forEach { configurationName -> project.addExtendsFromRelation(javaSourceSet.runtimeClasspathConfigurationName, configurationName) }