diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurations.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurations.kt index 519e27663a0..74999bd6f91 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurations.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurations.kt @@ -9,34 +9,34 @@ import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.artifacts.Configuration interface KotlinDependencyConfigurations { - val apiConfiguration: NamedDomainObjectProvider - val implementationConfiguration: NamedDomainObjectProvider - val compileOnlyConfiguration: NamedDomainObjectProvider - val runtimeOnlyConfiguration: NamedDomainObjectProvider + val apiConfiguration: Configuration + val implementationConfiguration: Configuration + val compileOnlyConfiguration: Configuration + val runtimeOnlyConfiguration: Configuration /** This configuration includes the dependencies from the refines-parents */ - val transitiveApiConfiguration: NamedDomainObjectProvider + val transitiveApiConfiguration: Configuration /** This configuration includes the dependencies from the refines-parents */ - val transitiveImplementationConfiguration: NamedDomainObjectProvider + val transitiveImplementationConfiguration: Configuration private class Impl( - override val apiConfiguration: NamedDomainObjectProvider, - override val implementationConfiguration: NamedDomainObjectProvider, - override val compileOnlyConfiguration: NamedDomainObjectProvider, - override val runtimeOnlyConfiguration: NamedDomainObjectProvider, - override val transitiveApiConfiguration: NamedDomainObjectProvider, - override val transitiveImplementationConfiguration: NamedDomainObjectProvider + 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: NamedDomainObjectProvider, - implementationConfiguration: NamedDomainObjectProvider, - compileOnlyConfiguration: NamedDomainObjectProvider, - runtimeOnlyConfiguration: NamedDomainObjectProvider, - transitiveApiConfiguration: NamedDomainObjectProvider, - transitiveImplementationConfiguration: NamedDomainObjectProvider + apiConfiguration: Configuration, + implementationConfiguration: Configuration, + compileOnlyConfiguration: Configuration, + runtimeOnlyConfiguration: Configuration, + transitiveApiConfiguration: Configuration, + transitiveImplementationConfiguration: Configuration ): KotlinDependencyConfigurations = Impl( apiConfiguration = apiConfiguration, implementationConfiguration = implementationConfiguration, diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleVariant.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleVariant.kt index 7508ada5d0e..f86e123656e 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleVariant.kt @@ -18,7 +18,7 @@ interface KotlinGradleVariant : KotlinGradleFragment, KotlinModuleVariant { val platformType: KotlinPlatformType // TODO generalize with KotlinCompilation? - val compileDependenciesConfiguration: NamedDomainObjectProvider + val compileDependenciesConfiguration: Configuration var compileDependencyFiles: FileCollection @@ -29,28 +29,28 @@ interface KotlinGradleVariant : KotlinGradleFragment, KotlinModuleVariant { val sourceArchiveTaskName: String // TODO generalize exposing outputs: what if a variant has more than one such configurations or none? - val apiElementsConfiguration: NamedDomainObjectProvider + val apiElementsConfiguration: Configuration val gradleVariantNames: Set } interface KotlinGradleVariantWithRuntime : KotlinGradleVariant { // TODO deduplicate with KotlinCompilation? - val runtimeDependenciesConfiguration: NamedDomainObjectProvider + val runtimeDependenciesConfiguration: Configuration var runtimeDependencyFiles: FileCollection val runtimeFiles: ConfigurableFileCollection // TODO generalize exposing outputs: what if a variant has more than one such configurations or none? - val runtimeElementsConfiguration: NamedDomainObjectProvider + val runtimeElementsConfiguration: Configuration } interface KotlinNativeVariant : KotlinGradleVariant { override val platformType: KotlinPlatformType get() = KotlinPlatformType.native - val hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider? + val hostSpecificMetadataElementsConfiguration: Configuration? var enableEndorsedLibraries: Boolean } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinJvmVariantFactoryTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinJvmVariantFactoryTest.kt index 24b98dbb2b6..eeff68b677d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinJvmVariantFactoryTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinJvmVariantFactoryTest.kt @@ -31,14 +31,14 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { fun `test accessing configurations`() { val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") - variant.compileDependenciesConfiguration.get() - variant.runtimeDependenciesConfiguration.get() - variant.apiElementsConfiguration.get() - variant.runtimeElementsConfiguration.get() - variant.implementationConfiguration.get() - variant.apiConfiguration.get() - variant.runtimeOnlyConfiguration.get() - variant.compileOnlyConfiguration.get() + variant.compileDependenciesConfiguration + variant.runtimeDependenciesConfiguration + variant.apiElementsConfiguration + variant.runtimeElementsConfiguration + variant.implementationConfiguration + variant.apiConfiguration + variant.runtimeOnlyConfiguration + variant.compileOnlyConfiguration } @Test @@ -88,13 +88,13 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { val variant = KotlinJvmVariantFactory( KotlinJvmVariantInstantiator(kotlin.main), KotlinJvmVariantConfigurator(compileDependenciesConfigurator = { fragment, configuration -> - assertSame(fragment.compileDependenciesConfiguration.get(), configuration) + assertSame(fragment.compileDependenciesConfiguration, configuration) configuration.attributes.attribute(testAttribute, "compileDependencies") }) ).create("jvm") assertEquals( - "compileDependencies", variant.compileDependenciesConfiguration.get().attributes.getAttribute(testAttribute) + "compileDependencies", variant.compileDependenciesConfiguration.attributes.getAttribute(testAttribute) ) } @@ -103,13 +103,13 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { val variant = KotlinJvmVariantFactory( KotlinJvmVariantInstantiator(kotlin.main), KotlinJvmVariantConfigurator(runtimeDependenciesConfigurator = { fragment, configuration -> - assertSame(fragment.runtimeDependenciesConfiguration.get(), configuration) + assertSame(fragment.runtimeDependenciesConfiguration, configuration) configuration.attributes.attribute(testAttribute, "runtimeDependencies") }) ).create("jvm") assertEquals( - "runtimeDependencies", variant.runtimeDependenciesConfiguration.get().attributes.getAttribute(testAttribute) + "runtimeDependencies", variant.runtimeDependenciesConfiguration.attributes.getAttribute(testAttribute) ) } @@ -117,13 +117,13 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { fun `test custom configure apiElementsConfiguration`() { val variant = KotlinJvmVariantFactory( KotlinJvmVariantInstantiator(kotlin.main), KotlinJvmVariantConfigurator(apiElementsConfigurator = { fragment, configuration -> - assertSame(fragment.apiElementsConfiguration.get(), configuration) + assertSame(fragment.apiElementsConfiguration, configuration) configuration.attributes.attribute(testAttribute, "apiElements") }) ).create("jvm") assertEquals( - "apiElements", variant.apiElementsConfiguration.get().attributes.getAttribute(testAttribute) + "apiElements", variant.apiElementsConfiguration.attributes.getAttribute(testAttribute) ) } @@ -132,13 +132,13 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { val variant = KotlinJvmVariantFactory( KotlinJvmVariantInstantiator(kotlin.main), KotlinJvmVariantConfigurator(runtimeElementsConfigurator = { fragment, configuration -> - assertSame(fragment.runtimeElementsConfiguration.get(), configuration) + assertSame(fragment.runtimeElementsConfiguration, configuration) configuration.attributes.attribute(testAttribute, "runtimeElements") }) ).create("jvm") assertEquals( - "runtimeElements", variant.runtimeElementsConfiguration.get().attributes.getAttribute(testAttribute) + "runtimeElements", variant.runtimeElementsConfiguration.attributes.getAttribute(testAttribute) ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinNativeVariantFactoryTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinNativeVariantFactoryTest.kt index 559482c310d..710f971535f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinNativeVariantFactoryTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinNativeVariantFactoryTest.kt @@ -53,7 +53,7 @@ class KotlinNativeVariantFactoryTest( fun `test compileDependenciesConfiguration - contains konanTarget`() { assertEquals( variantConstructor.konanTarget.name, - variant.compileDependenciesConfiguration.get() + variant.compileDependenciesConfiguration .attributes.getAttribute(KotlinNativeTarget.konanTargetAttribute) ) } @@ -62,7 +62,7 @@ class KotlinNativeVariantFactoryTest( fun `test apiElementsConfiguration - contains konanTarget`() { assertEquals( variantConstructor.konanTarget.name, - variant.apiElementsConfiguration.get() + variant.apiElementsConfiguration .attributes.getAttribute(KotlinNativeTarget.konanTargetAttribute) ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GradleProjectModuleBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GradleProjectModuleBuilder.kt index 249b6962e58..6f43e611181 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GradleProjectModuleBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GradleProjectModuleBuilder.kt @@ -334,7 +334,7 @@ class GradleModuleVariantResolver : ModuleVariantResolver { project.configurations.getByName(compilation.compileDependencyConfigurationName) } is KotlinPm20ProjectExtension -> { - (requestingVariant as KotlinGradleVariant).compileDependenciesConfiguration.get() + (requestingVariant as KotlinGradleVariant).compileDependenciesConfiguration } else -> error("could not find the compile dependencies configuration for variant $requestingVariant") } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt index 401689924ab..837a53298c2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt @@ -161,7 +161,7 @@ internal class FragmentGranularMetadataResolver( // resolve the dependencies of that variant getting the host-specific metadata artifact relevantVariantResolution?.let { resolution -> val configurationResolvingPlatformVariant = - (resolution.requestingVariant as KotlinGradleVariant).compileDependenciesConfiguration.get() + (resolution.requestingVariant as KotlinGradleVariant).compileDependenciesConfiguration val hostSpecificArtifact = ResolvedMppVariantsProvider.get(project) .getHostSpecificMetadataArtifactByRootModule( dependencyModule.moduleIdentifier, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurationsFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurationsFactory.kt index 634f5de293c..7a31f3915d4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurationsFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurationsFactory.kt @@ -6,9 +6,6 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.locateOrRegister -import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation -import org.jetbrains.kotlin.gradle.utils.extendsFrom interface KotlinDependencyConfigurationsFactory { fun create(module: KotlinGradleModule, names: FragmentNameDisambiguation): KotlinDependencyConfigurations @@ -18,12 +15,12 @@ object DefaultKotlinDependencyConfigurationsFactory : KotlinDependencyConfigurat override fun create(module: KotlinGradleModule, names: FragmentNameDisambiguation): KotlinDependencyConfigurations { val configurations = module.project.configurations - val apiConfiguration = configurations.locateOrRegister(names.disambiguateName("api")) - val implementationConfiguration = configurations.locateOrRegister(names.disambiguateName("implementation")) - val compileOnlyConfiguration = configurations.locateOrRegister(names.disambiguateName("compileOnly")) - val runtimeOnlyConfiguration = configurations.locateOrRegister(names.disambiguateName("runtimeOnly")) - val transitiveApiConfiguration = configurations.locateOrRegister(names.disambiguateName("transitiveApi")) - val transitiveImplementationConfiguration = configurations.locateOrRegister(names.disambiguateName("transitiveImplementation")) + val apiConfiguration = configurations.maybeCreate(names.disambiguateName("api")) + val implementationConfiguration = configurations.maybeCreate(names.disambiguateName("implementation")) + val compileOnlyConfiguration = configurations.maybeCreate(names.disambiguateName("compileOnly")) + val runtimeOnlyConfiguration = configurations.maybeCreate(names.disambiguateName("runtimeOnly")) + val transitiveApiConfiguration = configurations.maybeCreate(names.disambiguateName("transitiveApi")) + val transitiveImplementationConfiguration = configurations.maybeCreate(names.disambiguateName("transitiveImplementation")) listOf( apiConfiguration, @@ -32,11 +29,9 @@ object DefaultKotlinDependencyConfigurationsFactory : KotlinDependencyConfigurat runtimeOnlyConfiguration, transitiveApiConfiguration, transitiveImplementationConfiguration - ).forEach { configurationProvider -> - configurationProvider.configure { configuration -> - configuration.isCanBeConsumed = false - configuration.isCanBeResolved = false - } + ).forEach { configuration -> + configuration.isCanBeConsumed = false + configuration.isCanBeResolved = false } transitiveApiConfiguration.extendsFrom(apiConfiguration) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentConfigurationInstantiator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentConfigurationInstantiator.kt index 919175c31a0..b822f9ee9f2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentConfigurationInstantiator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentConfigurationInstantiator.kt @@ -5,14 +5,13 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 -import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.artifacts.Configuration import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation interface KotlinFragmentConfigurationInstantiator { - fun locateOrRegister( + fun create( module: KotlinGradleModule, names: FragmentNameDisambiguation, dependencies: KotlinDependencyConfigurations - ): NamedDomainObjectProvider + ): Configuration } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinHostSpecificMetadataArtifactConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinHostSpecificMetadataArtifactConfigurator.kt index acc729a3ca8..3d4ed379741 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinHostSpecificMetadataArtifactConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinHostSpecificMetadataArtifactConfigurator.kt @@ -14,8 +14,7 @@ import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION import org.jetbrains.kotlin.project.model.refinesClosure -object KotlinHostSpecificMetadataArtifactConfigurator : - KotlinGradleFragmentFactory.FragmentConfigurator { +object KotlinHostSpecificMetadataArtifactConfigurator : KotlinGradleFragmentFactory.FragmentConfigurator { override fun configure(fragment: KotlinNativeVariantInternal) { val project = fragment.project val hostSpecificMetadataElements = fragment.hostSpecificMetadataElementsConfiguration ?: return @@ -36,11 +35,9 @@ object KotlinHostSpecificMetadataArtifactConfigurator : } } - hostSpecificMetadataElements.configure { configuration -> - project.artifacts.add(configuration.name, hostSpecificMetadataJar) - configuration.dependencies.addAllLater(project.objects.listProperty(Dependency::class.java).apply { - set(project.provider { fragment.apiElementsConfiguration.get().allDependencies }) - }) - } + project.artifacts.add(hostSpecificMetadataElements.name, hostSpecificMetadataJar) + hostSpecificMetadataElements.dependencies.addAllLater(project.objects.listProperty(Dependency::class.java).apply { + set(project.provider { fragment.apiElementsConfiguration.allDependencies }) + }) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariant.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariant.kt index 0cf2b780862..d54446d03d3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariant.kt @@ -17,10 +17,10 @@ open class KotlinJvmVariant( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependenciesConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - runtimeDependenciesConfiguration: NamedDomainObjectProvider, - runtimeElementsConfiguration: NamedDomainObjectProvider + compileDependenciesConfiguration: Configuration, + apiElementsConfiguration: Configuration, + runtimeDependenciesConfiguration: Configuration, + runtimeElementsConfiguration: Configuration ) : KotlinGradlePublishedVariantWithRuntime( containingModule = containingModule, fragmentName = fragmentName, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariantFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariantFactory.kt index 9be941d596c..29cc444eb4c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariantFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariantFactory.kt @@ -50,10 +50,10 @@ class KotlinJvmVariantInstantiator( containingModule = module, fragmentName = name, dependencyConfigurations = dependencies, - compileDependenciesConfiguration = compileDependenciesConfigurationInstantiator.locateOrRegister(module, names, dependencies), - apiElementsConfiguration = apiElementsConfigurationInstantiator.locateOrRegister(module, names, dependencies), - runtimeDependenciesConfiguration = runtimeDependenciesConfigurationInstantiator.locateOrRegister(module, names, dependencies), - runtimeElementsConfiguration = runtimeElementsConfigurationInstantiator.locateOrRegister(module, names, dependencies) + compileDependenciesConfiguration = compileDependenciesConfigurationInstantiator.create(module, names, dependencies), + apiElementsConfiguration = apiElementsConfigurationInstantiator.create(module, names, dependencies), + runtimeDependenciesConfiguration = runtimeDependenciesConfigurationInstantiator.create(module, names, dependencies), + runtimeElementsConfiguration = runtimeElementsConfigurationInstantiator.create(module, names, dependencies) ) } } @@ -86,24 +86,11 @@ class KotlinJvmVariantConfigurator( ) : KotlinGradleFragmentFactory.FragmentConfigurator { override fun configure(fragment: KotlinJvmVariant) { - fragment.compileDependenciesConfiguration.configure { configuration -> - compileDependenciesConfigurator.configure(fragment, configuration) - } - - fragment.runtimeDependenciesConfiguration.configure { configuration -> - runtimeDependenciesConfigurator.configure(fragment, configuration) - } - - fragment.apiElementsConfiguration.configure { configuration -> - apiElementsConfigurator.configure(fragment, configuration) - } - - fragment.runtimeElementsConfiguration.configure { configuration -> - runtimeElementsConfigurator.configure(fragment, configuration) - } - + compileDependenciesConfigurator.configure(fragment, fragment.compileDependenciesConfiguration) + runtimeDependenciesConfigurator.configure(fragment, fragment.runtimeDependenciesConfiguration) + apiElementsConfigurator.configure(fragment, fragment.apiElementsConfiguration) + runtimeElementsConfigurator.configure(fragment, fragment.runtimeElementsConfiguration) sourceDirectoriesConfigurator.configure(fragment) - compileTaskConfigurator.registerCompileTasks(fragment) sourceArchiveTaskConfigurator.registerSourceArchiveTask(fragment) publicationConfigurator.configure(fragment) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt index 94614d1edb3..7982f981b28 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt @@ -20,9 +20,9 @@ abstract class KotlinNativeVariantInternal( fragmentName: String, val konanTarget: KonanTarget, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - final override val hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider? + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + final override val hostSpecificMetadataElementsConfiguration: Configuration? ) : KotlinNativeVariant, KotlinGradleVariantInternal( containingModule = containingModule, @@ -52,18 +52,18 @@ class KotlinNativeVariantConstructor( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider? + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? ) -> T ) { operator fun invoke( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider? + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? ): T = constructor( containingModule, fragmentName, dependencyConfigurations, @@ -78,9 +78,9 @@ open class KotlinLinuxX64Variant @Inject constructor( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider? + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? ) : KotlinNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, @@ -101,9 +101,9 @@ open class KotlinMacosX64Variant @Inject constructor( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider? + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? ) : KotlinNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, @@ -123,9 +123,9 @@ open class KotlinMacosX64Variant @Inject constructor( open class KotlinMacosArm64Variant @Inject constructor( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider? + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? ) : KotlinNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, @@ -146,9 +146,9 @@ open class KotlinIosX64Variant @Inject constructor( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider? + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? ) : KotlinNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, @@ -169,9 +169,9 @@ open class KotlinIosArm64Variant @Inject constructor( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider? + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? ) : KotlinNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariantFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariantFactory.kt index d31125d015a..7bb353aa389 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariantFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariantFactory.kt @@ -44,10 +44,10 @@ class KotlinNativeVariantInstantiator( containingModule = module, fragmentName = name, dependencyConfigurations = dependencies, - compileDependencyConfiguration = compileDependenciesConfigurationInstantiator.locateOrRegister(module, names, dependencies), - apiElementsConfiguration = apiElementsConfigurationInstantiator.locateOrRegister(module, names, dependencies), + compileDependencyConfiguration = compileDependenciesConfigurationInstantiator.create(module, names, dependencies), + apiElementsConfiguration = apiElementsConfigurationInstantiator.create(module, names, dependencies), hostSpecificMetadataElementsConfiguration = - hostSpecificMetadataElementsConfigurationInstantiator?.locateOrRegister(module, names, dependencies) + hostSpecificMetadataElementsConfigurationInstantiator?.create(module, names, dependencies) ) } } @@ -79,18 +79,11 @@ class KotlinNativeVariantConfigurator( ) : KotlinGradleFragmentFactory.FragmentConfigurator { override fun configure(fragment: T) { - fragment.compileDependenciesConfiguration.configure { configuration -> - compileDependenciesConfigurator.configure(fragment, configuration) - } - - fragment.apiElementsConfiguration.configure { configuration -> - apiElementsConfigurator.configure(fragment, configuration) - } - - fragment.hostSpecificMetadataElementsConfiguration?.configure { configuration -> + compileDependenciesConfigurator.configure(fragment, fragment.compileDependenciesConfiguration) + apiElementsConfigurator.configure(fragment, fragment.apiElementsConfiguration) + fragment.hostSpecificMetadataElementsConfiguration?.let { configuration -> hostSpecificMetadataElementsConfigurator.configure(fragment, configuration) } - hostSpecificMetadataArtifactConfigurator.configure(fragment) sourceDirectoriesConfigurator.configure(fragment) compileTaskConfigurator.registerCompileTasks(fragment) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt index 24d8e96a143..c79db3e4d5b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt @@ -54,7 +54,7 @@ internal open class TransformKotlinGranularMetadataForFragment val participatingFragments = fragment.refinesClosure val participatingCompilations = participatingFragments.flatMap { it.containingModule.variantsContainingFragment(it) } participatingCompilations.associate { variant -> - variant.fragmentName to variant.compileDependenciesConfiguration.get() + variant.fragmentName to variant.compileDependenciesConfiguration .allDependencies.map { listOf(it.group, it.name, it.version) }.toSet() } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt index 83e12c2808d..ce8048ab192 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt @@ -25,8 +25,8 @@ abstract class KotlinGradleVariantInternal( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - final override val compileDependenciesConfiguration: NamedDomainObjectProvider, - final override val apiElementsConfiguration: NamedDomainObjectProvider + final override val compileDependenciesConfiguration: Configuration, + final override val apiElementsConfiguration: Configuration ) : KotlinGradleFragmentInternal( containingModule, fragmentName, dependencyConfigurations ), KotlinGradleVariant { @@ -34,7 +34,7 @@ abstract class KotlinGradleVariantInternal( override val variantAttributes: Map get() = mapOf(KotlinPlatformTypeAttribute to kotlinPlatformTypeAttributeFromPlatform(platformType)) // TODO user attributes - override var compileDependencyFiles: FileCollection = project.files({ compileDependenciesConfiguration.get() }) + override var compileDependencyFiles: FileCollection = project.files({ compileDependenciesConfiguration }) internal abstract val compilationData: KotlinVariantCompilationDataInternal<*> @@ -80,10 +80,10 @@ abstract class KotlinGradleVariantWithRuntimeInternal( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - final override val runtimeDependenciesConfiguration: NamedDomainObjectProvider, - final override val runtimeElementsConfiguration: NamedDomainObjectProvider + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + final override val runtimeDependenciesConfiguration: Configuration, + final override val runtimeElementsConfiguration: Configuration ) : KotlinGradleVariantInternal( containingModule = containingModule, fragmentName = fragmentName, @@ -105,10 +105,10 @@ private fun defaultModuleSuffix(module: KotlinGradleModule, variantName: String) abstract class KotlinGradlePublishedVariantWithRuntime( containingModule: KotlinGradleModule, fragmentName: String, dependencyConfigurations: KotlinDependencyConfigurations, - compileDependencyConfiguration: NamedDomainObjectProvider, - apiElementsConfiguration: NamedDomainObjectProvider, - runtimeDependencyConfiguration: NamedDomainObjectProvider, - runtimeElementsConfiguration: NamedDomainObjectProvider + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + runtimeDependencyConfiguration: Configuration, + runtimeElementsConfiguration: Configuration ) : KotlinGradleVariantWithRuntimeInternal( containingModule = containingModule, fragmentName = fragmentName, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinApiElements.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinApiElements.kt index 8420d4c278c..cf50518cae9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinApiElements.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinApiElements.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.configuration -import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.artifacts.Configuration import org.gradle.api.attributes.Bundling import org.gradle.api.attributes.Category @@ -13,22 +12,21 @@ import org.gradle.jvm.tasks.Jar import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.locateOrRegister import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask import org.jetbrains.kotlin.gradle.utils.dashSeparatedName interface KotlinApiElementsConfigurationInstantiator : KotlinFragmentConfigurationInstantiator object DefaultKotlinApiElementsConfigurationInstantiator : KotlinApiElementsConfigurationInstantiator { - override fun locateOrRegister( + override fun create( module: KotlinGradleModule, names: FragmentNameDisambiguation, dependencies: KotlinDependencyConfigurations - ): NamedDomainObjectProvider { - return module.project.configurations.locateOrRegister(names.disambiguateName("apiElements")) { + ): Configuration { + return module.project.configurations.maybeCreate(names.disambiguateName("apiElements")).apply { isCanBeResolved = false isCanBeConsumed = false - extendsFrom(dependencies.transitiveApiConfiguration.get()) + extendsFrom(dependencies.transitiveApiConfiguration) module.ifMadePublic { isCanBeConsumed = true } attributes.attribute(Category.CATEGORY_ATTRIBUTE, module.project.objects.named(Category::class.java, Category.LIBRARY)) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinCompileDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinCompileDependencies.kt index 597fe1be3f3..b41bcabf5cc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinCompileDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinCompileDependencies.kt @@ -16,12 +16,12 @@ import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation interface KotlinCompileDependenciesConfigurationInstantiator : KotlinFragmentConfigurationInstantiator object DefaultKotlinCompileDependenciesConfigurationInstantiator : KotlinCompileDependenciesConfigurationInstantiator { - override fun locateOrRegister( + override fun create( module: KotlinGradleModule, names: FragmentNameDisambiguation, dependencies: KotlinDependencyConfigurations - ): NamedDomainObjectProvider { - return module.project.configurations.locateOrRegister(names.disambiguateName("compileDependencies")) { + ): Configuration { + return module.project.configurations.maybeCreate(names.disambiguateName("compileDependencies")).apply { isCanBeConsumed = false isCanBeResolved = true module.project.addExtendsFromRelation(name, dependencies.transitiveApiConfiguration.name) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinHostSpecificMetadataElements.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinHostSpecificMetadataElements.kt index 66fe3d5d651..5ce3788c6fb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinHostSpecificMetadataElements.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinHostSpecificMetadataElements.kt @@ -7,12 +7,10 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.configuration -import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.artifacts.Configuration import org.jetbrains.kotlin.gradle.plugin.mpp.isHostSpecificKonanTargetsSet import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.locateOrRegister import org.jetbrains.kotlin.konan.target.KonanTarget interface KotlinHostSpecificMetadataElementsConfigurationInstantiator : KotlinFragmentConfigurationInstantiator @@ -24,10 +22,10 @@ fun DefaultKotlinHostSpecificMetadataElementsConfigurationInstantiator( private object DefaultKotlinHostSpecificMetadataElementsConfigurationInstantiator : KotlinHostSpecificMetadataElementsConfigurationInstantiator { - override fun locateOrRegister( + override fun create( module: KotlinGradleModule, names: FragmentNameDisambiguation, dependencies: KotlinDependencyConfigurations - ): NamedDomainObjectProvider { - return module.project.configurations.locateOrRegister(names.disambiguateName("hostSpecificMetadataElements")) { + ): Configuration { + return module.project.configurations.maybeCreate(names.disambiguateName("hostSpecificMetadataElements")).apply { isCanBeResolved = false isCanBeConsumed = false } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinRuntimeDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinRuntimeDependencies.kt index 1238f6708d1..c0fa1ba145e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinRuntimeDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinRuntimeDependencies.kt @@ -15,12 +15,12 @@ import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation interface KotlinRuntimeDependenciesConfigurationInstantiator : KotlinFragmentConfigurationInstantiator object DefaultKotlinRuntimeDependenciesConfigurationInstantiator : KotlinRuntimeDependenciesConfigurationInstantiator { - override fun locateOrRegister( + override fun create( module: KotlinGradleModule, names: FragmentNameDisambiguation, dependencies: KotlinDependencyConfigurations - ): NamedDomainObjectProvider { - return module.project.configurations.locateOrRegister(names.disambiguateName("runtimeDependencies")) { + ): Configuration { + return module.project.configurations.maybeCreate(names.disambiguateName("runtimeDependencies")).apply { isCanBeConsumed = false isCanBeResolved = true module.project.addExtendsFromRelation(name, dependencies.transitiveApiConfiguration.name) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinRuntimeElements.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinRuntimeElements.kt index 476b8949c2c..4dd49fb5abb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinRuntimeElements.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/configuration/KotlinRuntimeElements.kt @@ -5,32 +5,30 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.configuration -import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.artifacts.Configuration import org.gradle.api.attributes.Bundling import org.gradle.api.attributes.Category import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinFragmentModuleCapabilityConfigurator.setModuleCapability import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.locateOrRegister interface KotlinRuntimeElementsConfigurationFactory : KotlinFragmentConfigurationInstantiator object DefaultKotlinRuntimeElementsConfigurationInstantiator : KotlinRuntimeElementsConfigurationFactory { - override fun locateOrRegister( + override fun create( module: KotlinGradleModule, names: FragmentNameDisambiguation, dependencies: KotlinDependencyConfigurations - ): NamedDomainObjectProvider { - return module.project.configurations.locateOrRegister(names.disambiguateName("runtimeElements")) { + ): Configuration { + return module.project.configurations.maybeCreate(names.disambiguateName("runtimeElements")).apply { isCanBeResolved = false isCanBeConsumed = false attributes.attribute(Category.CATEGORY_ATTRIBUTE, module.project.objects.named(Category::class.java, Category.LIBRARY)) attributes.attribute(Bundling.BUNDLING_ATTRIBUTE, module.project.objects.named(Bundling::class.java, Bundling.EXTERNAL)) - extendsFrom(dependencies.transitiveApiConfiguration.get()) - extendsFrom(dependencies.transitiveImplementationConfiguration.get()) + extendsFrom(dependencies.transitiveApiConfiguration) + extendsFrom(dependencies.transitiveImplementationConfiguration) module.ifMadePublic { isCanBeConsumed = true setModuleCapability(this, module)