[Gradle][KPM] Split fragment specific configurations from KotlinDependencyConfigurations

This commit is contained in:
sebastian.sellmair
2021-12-06 10:04:06 +01:00
committed by Space
parent d7df56a390
commit 2a43199287
17 changed files with 75 additions and 66 deletions
@@ -12,37 +12,4 @@ interface KotlinDependencyConfigurations {
val implementationConfiguration: Configuration
val compileOnlyConfiguration: Configuration
val runtimeOnlyConfiguration: Configuration
/** This configuration includes the dependencies from the refines-parents */
val transitiveApiConfiguration: Configuration
/** This configuration includes the dependencies from the refines-parents */
val transitiveImplementationConfiguration: Configuration
private class Impl(
override val apiConfiguration: Configuration,
override val implementationConfiguration: Configuration,
override val compileOnlyConfiguration: Configuration,
override val runtimeOnlyConfiguration: Configuration,
override val transitiveApiConfiguration:Configuration,
override val transitiveImplementationConfiguration: Configuration
) : KotlinDependencyConfigurations
companion object {
fun create(
apiConfiguration: Configuration,
implementationConfiguration: Configuration,
compileOnlyConfiguration: Configuration,
runtimeOnlyConfiguration: Configuration,
transitiveApiConfiguration: Configuration,
transitiveImplementationConfiguration: Configuration
): KotlinDependencyConfigurations = Impl(
apiConfiguration = apiConfiguration,
implementationConfiguration = implementationConfiguration,
compileOnlyConfiguration = compileOnlyConfiguration,
runtimeOnlyConfiguration = runtimeOnlyConfiguration,
transitiveApiConfiguration = transitiveApiConfiguration,
transitiveImplementationConfiguration = transitiveImplementationConfiguration
)
}
}
@@ -0,0 +1,43 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.gradle.api.artifacts.Configuration
interface KotlinFragmentDependencyConfigurations : KotlinDependencyConfigurations {
/** This configuration includes the dependencies from the refines-parents */
val transitiveApiConfiguration: Configuration
/** This configuration includes the dependencies from the refines-parents */
val transitiveImplementationConfiguration: Configuration
private class Impl(
override val apiConfiguration: Configuration,
override val implementationConfiguration: Configuration,
override val compileOnlyConfiguration: Configuration,
override val runtimeOnlyConfiguration: Configuration,
override val transitiveApiConfiguration: Configuration,
override val transitiveImplementationConfiguration: Configuration
) : KotlinFragmentDependencyConfigurations
companion object {
fun create(
apiConfiguration: Configuration,
implementationConfiguration: Configuration,
compileOnlyConfiguration: Configuration,
runtimeOnlyConfiguration: Configuration,
transitiveApiConfiguration: Configuration,
transitiveImplementationConfiguration: Configuration
): KotlinFragmentDependencyConfigurations = Impl(
apiConfiguration = apiConfiguration,
implementationConfiguration = implementationConfiguration,
compileOnlyConfiguration = compileOnlyConfiguration,
runtimeOnlyConfiguration = runtimeOnlyConfiguration,
transitiveApiConfiguration = transitiveApiConfiguration,
transitiveImplementationConfiguration = transitiveImplementationConfiguration
)
}
}
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
import org.jetbrains.kotlin.project.model.KotlinModuleFragment
import org.jetbrains.kotlin.project.model.refinesClosure
interface KotlinGradleFragment : KotlinModuleFragment, HasKotlinDependencies, KotlinDependencyConfigurations, Named {
interface KotlinGradleFragment : KotlinModuleFragment, HasKotlinDependencies, KotlinFragmentDependencyConfigurations, Named {
override val kotlinSourceRoots: SourceDirectorySet
override val containingModule: KotlinGradleModule
@@ -24,8 +24,8 @@ fun KotlinCommonFragmentFactory(
class KotlinCommonFragmentInstantiator(
private val module: KotlinGradleModule,
private val dependencyConfigurationsFactory: KotlinDependencyConfigurationsFactory =
DefaultKotlinDependencyConfigurationsFactory
private val dependencyConfigurationsFactory: KotlinFragmentDependencyConfigurationsFactory =
DefaultKotlinFragmentDependencyConfigurationsFactory
) : KotlinGradleFragmentFactory.FragmentInstantiator<KotlinGradleFragmentInternal> {
override fun create(name: String): KotlinGradleFragmentInternal {
val names = FragmentNameDisambiguation(module, name)
@@ -12,6 +12,6 @@ interface KotlinFragmentConfigurationInstantiator {
fun create(
module: KotlinGradleModule,
names: FragmentNameDisambiguation,
dependencies: KotlinDependencyConfigurations
dependencies: KotlinFragmentDependencyConfigurations
): Configuration
}
@@ -7,13 +7,13 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
interface KotlinDependencyConfigurationsFactory {
fun create(module: KotlinGradleModule, names: FragmentNameDisambiguation): KotlinDependencyConfigurations
interface KotlinFragmentDependencyConfigurationsFactory {
fun create(module: KotlinGradleModule, names: FragmentNameDisambiguation): KotlinFragmentDependencyConfigurations
}
object DefaultKotlinDependencyConfigurationsFactory : KotlinDependencyConfigurationsFactory {
object DefaultKotlinFragmentDependencyConfigurationsFactory : KotlinFragmentDependencyConfigurationsFactory {
override fun create(module: KotlinGradleModule, names: FragmentNameDisambiguation): KotlinDependencyConfigurations {
override fun create(module: KotlinGradleModule, names: FragmentNameDisambiguation): KotlinFragmentDependencyConfigurations {
val configurations = module.project.configurations
val apiConfiguration = configurations.maybeCreate(names.disambiguateName("api"))
val implementationConfiguration = configurations.maybeCreate(names.disambiguateName("implementation"))
@@ -37,7 +37,7 @@ object DefaultKotlinDependencyConfigurationsFactory : KotlinDependencyConfigurat
transitiveApiConfiguration.extendsFrom(apiConfiguration)
transitiveImplementationConfiguration.extendsFrom(implementationConfiguration)
return KotlinDependencyConfigurations.create(
return KotlinFragmentDependencyConfigurations.create(
apiConfiguration = apiConfiguration,
implementationConfiguration = implementationConfiguration,
compileOnlyConfiguration = compileOnlyConfiguration,
@@ -28,8 +28,8 @@ import javax.inject.Inject
open class KotlinGradleFragmentInternal @Inject constructor(
final override val containingModule: KotlinGradleModule,
final override val fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations
) : KotlinGradleFragment, KotlinDependencyConfigurations by dependencyConfigurations {
dependencyConfigurations: KotlinFragmentDependencyConfigurations
) : KotlinGradleFragment, KotlinFragmentDependencyConfigurations by dependencyConfigurations {
final override fun getName(): String = fragmentName
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.filterModuleName
open class KotlinJvmVariant(
containingModule: KotlinGradleModule,
fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependenciesConfiguration: Configuration,
apiElementsConfiguration: Configuration,
runtimeDependenciesConfiguration: Configuration,
@@ -26,8 +26,8 @@ fun KotlinJvmVariantFactory(
class KotlinJvmVariantInstantiator(
private val module: KotlinGradleModule,
private val dependenciesConfigurationFactory: KotlinDependencyConfigurationsFactory =
DefaultKotlinDependencyConfigurationsFactory,
private val dependenciesConfigurationFactory: KotlinFragmentDependencyConfigurationsFactory =
DefaultKotlinFragmentDependencyConfigurationsFactory,
private val compileDependenciesConfigurationInstantiator: KotlinCompileDependenciesConfigurationInstantiator =
DefaultKotlinCompileDependenciesConfigurationInstantiator,
@@ -18,7 +18,7 @@ abstract class KotlinNativeVariantInternal(
containingModule: KotlinGradleModule,
fragmentName: String,
val konanTarget: KonanTarget,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
final override val hostSpecificMetadataElementsConfiguration: Configuration?
@@ -50,7 +50,7 @@ class KotlinNativeVariantConstructor<T : KotlinNativeVariantInternal>(
private val constructor: (
containingModule: KotlinGradleModule,
fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
hostSpecificMetadataElementsConfiguration: Configuration?
@@ -59,7 +59,7 @@ class KotlinNativeVariantConstructor<T : KotlinNativeVariantInternal>(
operator fun invoke(
containingModule: KotlinGradleModule,
fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
hostSpecificMetadataElementsConfiguration: Configuration?
@@ -76,7 +76,7 @@ class KotlinNativeVariantConstructor<T : KotlinNativeVariantInternal>(
open class KotlinLinuxX64Variant @Inject constructor(
containingModule: KotlinGradleModule,
fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
hostSpecificMetadataElementsConfiguration: Configuration?
@@ -99,7 +99,7 @@ open class KotlinLinuxX64Variant @Inject constructor(
open class KotlinMacosX64Variant @Inject constructor(
containingModule: KotlinGradleModule,
fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
hostSpecificMetadataElementsConfiguration: Configuration?
@@ -121,7 +121,7 @@ open class KotlinMacosX64Variant @Inject constructor(
open class KotlinMacosArm64Variant @Inject constructor(
containingModule: KotlinGradleModule, fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
hostSpecificMetadataElementsConfiguration: Configuration?
@@ -144,7 +144,7 @@ open class KotlinMacosArm64Variant @Inject constructor(
open class KotlinIosX64Variant @Inject constructor(
containingModule: KotlinGradleModule,
fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
hostSpecificMetadataElementsConfiguration: Configuration?
@@ -167,7 +167,7 @@ open class KotlinIosX64Variant @Inject constructor(
open class KotlinIosArm64Variant @Inject constructor(
containingModule: KotlinGradleModule,
fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
hostSpecificMetadataElementsConfiguration: Configuration?
@@ -23,8 +23,8 @@ class KotlinNativeVariantInstantiator<T : KotlinNativeVariantInternal>(
private val kotlinNativeVariantConstructor: KotlinNativeVariantConstructor<T>,
private val dependenciesConfigurationFactory: KotlinDependencyConfigurationsFactory =
DefaultKotlinDependencyConfigurationsFactory,
private val dependenciesConfigurationFactory: KotlinFragmentDependencyConfigurationsFactory =
DefaultKotlinFragmentDependencyConfigurationsFactory,
private val compileDependenciesConfigurationInstantiator: KotlinCompileDependenciesConfigurationInstantiator =
DefaultKotlinCompileDependenciesConfigurationInstantiator,
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.gradle.api.NamedDomainObjectProvider
import org.gradle.api.artifacts.Configuration
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.FileCollection
@@ -24,7 +23,7 @@ import org.jetbrains.kotlin.project.model.KotlinPlatformTypeAttribute
abstract class KotlinGradleVariantInternal(
containingModule: KotlinGradleModule,
fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
final override val compileDependenciesConfiguration: Configuration,
final override val apiElementsConfiguration: Configuration
) : KotlinGradleFragmentInternal(
@@ -79,7 +78,7 @@ internal val KotlinGradleVariant.defaultSourceArtifactTaskName: String
abstract class KotlinGradleVariantWithRuntimeInternal(
containingModule: KotlinGradleModule,
fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
final override val runtimeDependenciesConfiguration: Configuration,
@@ -104,7 +103,7 @@ private fun defaultModuleSuffix(module: KotlinGradleModule, variantName: String)
abstract class KotlinGradlePublishedVariantWithRuntime(
containingModule: KotlinGradleModule, fragmentName: String,
dependencyConfigurations: KotlinDependencyConfigurations,
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
compileDependencyConfiguration: Configuration,
apiElementsConfiguration: Configuration,
runtimeDependencyConfiguration: Configuration,
@@ -17,7 +17,7 @@ object DefaultKotlinApiElementsConfigurationInstantiator : KotlinApiElementsConf
override fun create(
module: KotlinGradleModule,
names: FragmentNameDisambiguation,
dependencies: KotlinDependencyConfigurations
dependencies: KotlinFragmentDependencyConfigurations
): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("apiElements")).apply {
isCanBeResolved = false
@@ -17,7 +17,7 @@ object DefaultKotlinCompileDependenciesConfigurationInstantiator : KotlinCompile
override fun create(
module: KotlinGradleModule,
names: FragmentNameDisambiguation,
dependencies: KotlinDependencyConfigurations
dependencies: KotlinFragmentDependencyConfigurations
): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("compileDependencies")).apply {
isCanBeConsumed = false
@@ -23,7 +23,7 @@ fun DefaultKotlinHostSpecificMetadataElementsConfigurationInstantiator(
private object DefaultKotlinHostSpecificMetadataElementsConfigurationInstantiator :
KotlinHostSpecificMetadataElementsConfigurationInstantiator {
override fun create(
module: KotlinGradleModule, names: FragmentNameDisambiguation, dependencies: KotlinDependencyConfigurations
module: KotlinGradleModule, names: FragmentNameDisambiguation, dependencies: KotlinFragmentDependencyConfigurations
): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("hostSpecificMetadataElements")).apply {
isCanBeResolved = false
@@ -16,7 +16,7 @@ object DefaultKotlinRuntimeDependenciesConfigurationInstantiator : KotlinRuntime
override fun create(
module: KotlinGradleModule,
names: FragmentNameDisambiguation,
dependencies: KotlinDependencyConfigurations
dependencies: KotlinFragmentDependencyConfigurations
): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("runtimeDependencies")).apply {
isCanBeConsumed = false
@@ -18,7 +18,7 @@ object DefaultKotlinRuntimeElementsConfigurationInstantiator : KotlinRuntimeElem
override fun create(
module: KotlinGradleModule,
names: FragmentNameDisambiguation,
dependencies: KotlinDependencyConfigurations
dependencies: KotlinFragmentDependencyConfigurations
): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("runtimeElements")).apply {
isCanBeResolved = false