[Gradle] Move pluginConfiguration into KotlinCompilationConfigurationsContainer

^KT-54312 Verification Pending
This commit is contained in:
Sebastian Sellmair
2022-10-14 12:40:42 +02:00
committed by Space Team
parent b383e7cd38
commit b7e2923103
9 changed files with 55 additions and 55 deletions
@@ -28,7 +28,6 @@ import org.gradle.api.tasks.bundling.Zip
import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.gradle.language.jvm.tasks.ProcessResources
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.internal.reorderPluginClasspathDependencies
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
@@ -274,22 +273,6 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
val target = compilation.target
val configurations = target.project.configurations
configurations.maybeCreate(compilation.pluginConfigurationName).apply {
addGradlePluginMetadataAttributes(project)
if (target.platformType == KotlinPlatformType.native) {
extendsFrom(configurations.getByName(NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME))
isTransitive = false
} else {
extendsFrom(target.project.commonKotlinPluginClasspath)
}
isVisible = false
isCanBeConsumed = false
description = "Kotlin compiler plugins for $compilation"
reorderPluginClasspathDependencies()
}
val compileConfiguration = configurations.findByName(compilation.deprecatedCompileConfigurationName)?.apply {
isCanBeConsumed = false
setupAsLocalTargetSpecificConfigurationIfSupported(target)
@@ -552,5 +535,3 @@ private fun Configuration.setJavaTargetEnvironmentAttributeIfSupported(project:
}
internal val Project.commonKotlinPluginClasspath get() = configurations.getByName(PLUGIN_CLASSPATH_CONFIGURATION_NAME)
internal val KotlinCompilation<*>.pluginConfigurationName
get() = lowerCamelCaseName(PLUGIN_CLASSPATH_CONFIGURATION_NAME, target.disambiguationClassifier, compilationName)
@@ -5,10 +5,7 @@ import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.compile.JavaCompile
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
@@ -41,10 +38,12 @@ class SubpluginEnvironment(
if (kotlinCompilation is AbstractKotlinNativeCompilation && !kotlinCompilation.useGenericPluginArtifact) {
subplugin.getPluginArtifactForNative()?.let { artifact ->
project.addMavenDependency(kotlinCompilation.pluginConfigurationName, artifact)
project.addMavenDependency(kotlinCompilation.internal.configurations.pluginConfiguration.name, artifact)
}
} else {
project.addMavenDependency(kotlinCompilation.pluginConfigurationName, subplugin.getPluginArtifact())
project.addMavenDependency(
kotlinCompilation.internal.configurations.pluginConfiguration.name, subplugin.getPluginArtifact()
)
}
val subpluginOptionsProvider = subplugin.applyToCompilation(kotlinCompilation)
@@ -9,7 +9,7 @@ import org.gradle.api.file.FileCollection
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationDependencyConfigurationsContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationConfigurationsContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationModuleManager
import org.jetbrains.kotlin.gradle.utils.ObservableSet
import org.jetbrains.kotlin.tooling.core.MutableExtras
@@ -20,7 +20,7 @@ internal interface InternalKotlinCompilation<out T : KotlinCommonOptions> : Kotl
override val kotlinSourceSets: ObservableSet<KotlinSourceSet>
override val allKotlinSourceSets: ObservableSet<KotlinSourceSet>
val configurations: KotlinCompilationDependencyConfigurationsContainer
val configurations: KotlinCompilationConfigurationsContainer
val friendPaths: Iterable<FileCollection>
val compilationModule: KotlinCompilationModuleManager.CompilationModule
val processResourcesTaskName: String?
@@ -8,33 +8,32 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.attributes.Category
import org.gradle.api.attributes.Usage
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinDependencyHandler
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import org.jetbrains.kotlin.gradle.utils.*
internal interface KotlinCompilationDependencyConfigurationsContainer {
internal interface KotlinCompilationConfigurationsContainer {
val apiConfiguration: Configuration
val implementationConfiguration: Configuration
val compileOnlyConfiguration: Configuration
val runtimeOnlyConfiguration: Configuration
val compileDependencyConfiguration: Configuration
val runtimeDependencyConfiguration: Configuration?
val pluginConfiguration: Configuration
}
internal class DefaultKotlinCompilationDependencyConfigurationsContainer(
internal class DefaultKotlinCompilationConfigurationsContainer(
override val apiConfiguration: Configuration,
override val implementationConfiguration: Configuration,
override val compileOnlyConfiguration: Configuration,
override val runtimeOnlyConfiguration: Configuration,
override val compileDependencyConfiguration: Configuration,
override val runtimeDependencyConfiguration: Configuration?
) : KotlinCompilationDependencyConfigurationsContainer
override val runtimeDependencyConfiguration: Configuration?,
override val pluginConfiguration: Configuration
) : KotlinCompilationConfigurationsContainer
internal fun HasKotlinDependencies(
project: Project, compilationDependencyContainer: KotlinCompilationDependencyConfigurationsContainer
project: Project, compilationDependencyContainer: KotlinCompilationConfigurationsContainer
): HasKotlinDependencies = object : HasKotlinDependencies {
override fun dependencies(configure: KotlinDependencyHandler.() -> Unit): Unit =
DefaultKotlinDependencyHandler(this, project).run(configure)
@@ -36,7 +36,7 @@ internal class KotlinCompilationImpl @Inject constructor(
val target: KotlinTarget,
val compilationModule: KotlinCompilationModuleManager.CompilationModule,
val sourceSets: KotlinCompilationSourceSetsContainer,
val dependencyConfigurations: KotlinCompilationDependencyConfigurationsContainer,
val dependencyConfigurations: KotlinCompilationConfigurationsContainer,
val compilationTaskNames: KotlinCompilationTaskNamesContainer,
val processResourcesTaskName: String?,
val output: KotlinCompilationOutput,
@@ -61,7 +61,7 @@ internal class KotlinCompilationImpl @Inject constructor(
val sourceSets get() = params.sourceSets
override val configurations: KotlinCompilationDependencyConfigurationsContainer
override val configurations: KotlinCompilationConfigurationsContainer
get() = params.dependencyConfigurations
override val compilationName: String
@@ -7,11 +7,12 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory
import org.gradle.api.attributes.Category
import org.gradle.api.attributes.Usage
import org.jetbrains.kotlin.gradle.internal.reorderPluginClasspathDependencies
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationDependencyConfigurationsContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationDependencyConfigurationsContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationConfigurationsContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationConfigurationsContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.javaSourceSets
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
@@ -21,13 +22,13 @@ internal sealed class DefaultKotlinCompilationDependencyConfigurationsFactory :
KotlinCompilationImplFactory.KotlinCompilationDependencyConfigurationsFactory {
object WithRuntime : DefaultKotlinCompilationDependencyConfigurationsFactory() {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationDependencyConfigurationsContainer {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationConfigurationsContainer {
return KotlinCompilationDependencyConfigurationsContainer(target, compilationName, withRuntime = true)
}
}
object WithoutRuntime : DefaultKotlinCompilationDependencyConfigurationsFactory() {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationDependencyConfigurationsContainer {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationConfigurationsContainer {
return KotlinCompilationDependencyConfigurationsContainer(target, compilationName, withRuntime = false)
}
}
@@ -36,7 +37,7 @@ internal sealed class DefaultKotlinCompilationDependencyConfigurationsFactory :
internal object NativeKotlinCompilationDependencyConfigurationsFactory :
KotlinCompilationImplFactory.KotlinCompilationDependencyConfigurationsFactory {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationDependencyConfigurationsContainer {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationConfigurationsContainer {
val naming = ConfigurationNaming.Default(target, compilationName)
return KotlinCompilationDependencyConfigurationsContainer(
target = target,
@@ -51,7 +52,7 @@ internal object NativeKotlinCompilationDependencyConfigurationsFactory :
internal object JsKotlinCompilationDependencyConfigurationsFactory :
KotlinCompilationImplFactory.KotlinCompilationDependencyConfigurationsFactory {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationDependencyConfigurationsContainer {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationConfigurationsContainer {
val defaultNaming = ConfigurationNaming.Default(target, compilationName)
return KotlinCompilationDependencyConfigurationsContainer(
target, compilationName, withRuntime = true,
@@ -64,7 +65,7 @@ internal object JsKotlinCompilationDependencyConfigurationsFactory :
internal class JvmWithJavaCompilationDependencyConfigurationsFactory(private val target: KotlinWithJavaTarget<*, *>) :
KotlinCompilationImplFactory.KotlinCompilationDependencyConfigurationsFactory {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationDependencyConfigurationsContainer {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationConfigurationsContainer {
val javaSourceSet = this.target.javaSourceSets.maybeCreate(compilationName)
return KotlinCompilationDependencyConfigurationsContainer(
target = target, compilationName = compilationName, withRuntime = true,
@@ -119,8 +120,13 @@ private fun KotlinCompilationDependencyConfigurationsContainer(
compileOnlyConfigurationName: String = naming.name(compilation, COMPILE_ONLY),
runtimeOnlyConfigurationName: String = naming.name(compilation, RUNTIME_ONLY),
compileClasspathConfigurationName: String = naming.name(compileClasspath),
runtimeClasspathConfigurationName: String = naming.name(runtimeClasspath)
): KotlinCompilationDependencyConfigurationsContainer {
runtimeClasspathConfigurationName: String = naming.name(runtimeClasspath),
pluginConfigurationName: String = lowerCamelCaseName(
PLUGIN_CLASSPATH_CONFIGURATION_NAME,
target.disambiguationClassifier,
compilationName
)
): KotlinCompilationConfigurationsContainer {
val compilationCoordinates = "${target.disambiguationClassifier}/$compilationName"
val apiConfiguration = target.project.configurations.maybeCreate(apiConfigurationName).apply {
@@ -180,12 +186,28 @@ private fun KotlinCompilationDependencyConfigurationsContainer(
description = "Runtime classpath of $compilationCoordinates."
} else null
return DefaultKotlinCompilationDependencyConfigurationsContainer(
val pluginConfiguration = target.project.configurations.maybeCreate(pluginConfigurationName).apply {
addGradlePluginMetadataAttributes(target.project)
if (target.platformType == KotlinPlatformType.native) {
extendsFrom(target.project.configurations.getByName(NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME))
isTransitive = false
} else {
extendsFrom(target.project.commonKotlinPluginClasspath)
}
isVisible = false
isCanBeConsumed = false
description = "Kotlin compiler plugins for $compilation"
reorderPluginClasspathDependencies()
}
return DefaultKotlinCompilationConfigurationsContainer(
apiConfiguration = apiConfiguration,
implementationConfiguration = implementationConfiguration,
compileOnlyConfiguration = compileOnlyConfiguration,
runtimeOnlyConfiguration = runtimeOnlyConfiguration,
compileDependencyConfiguration = compileDependencyConfiguration,
runtimeDependencyConfiguration = runtimeDependencyConfiguration
runtimeDependencyConfiguration = runtimeDependencyConfiguration,
pluginConfiguration = pluginConfiguration
)
}
@@ -68,7 +68,7 @@ internal class KotlinCompilationImplFactory(
}
fun interface KotlinCompilationDependencyConfigurationsFactory {
fun create(target: KotlinTarget, compilationName: String): KotlinCompilationDependencyConfigurationsContainer
fun create(target: KotlinTarget, compilationName: String): KotlinCompilationConfigurationsContainer
}
fun interface KotlinCompilationOutputFactory {
@@ -533,9 +533,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
.addSubpluginOptions(project, compilation)
compilation.compileKotlinTaskProvider.configure {
it.compilerPluginClasspath = project
.configurations
.getByName(compilation.pluginConfigurationName)
it.compilerPluginClasspath = compilation.configurations.pluginConfiguration
}
}
}
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.gradle.dsl.topLevelExtension
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.associateWithClosure
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToCompilerOptions
import org.jetbrains.kotlin.gradle.report.BuildMetricsService
import org.jetbrains.kotlin.gradle.report.BuildReportsService
@@ -94,7 +95,7 @@ internal abstract class AbstractKotlinCompileConfig<TASK : AbstractKotlinCompile
.value(providers.provider { compilation.associateWithClosure.map { it.name } })
.disallowChanges()
task.pluginClasspath.from(
compilation.project.configurations.getByName(compilation.pluginConfigurationName)
compilation.internal.configurations.pluginConfiguration
)
}
task.moduleName.set(providers.provider { compilationProjection.moduleName })