[Gradle][KPM] Reference Configurations directly
Configurations are not registered/created lazily which makes referencing NamedDomainObjectProvider over Configurations unnecessary for now.
This commit is contained in:
committed by
Space
parent
032981dd83
commit
444b88e438
+18
-18
@@ -9,34 +9,34 @@ import org.gradle.api.NamedDomainObjectProvider
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
|
||||
interface KotlinDependencyConfigurations {
|
||||
val apiConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
val implementationConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
val compileOnlyConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
val runtimeOnlyConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
val apiConfiguration: Configuration
|
||||
val implementationConfiguration: Configuration
|
||||
val compileOnlyConfiguration: Configuration
|
||||
val runtimeOnlyConfiguration: Configuration
|
||||
|
||||
/** This configuration includes the dependencies from the refines-parents */
|
||||
val transitiveApiConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
val transitiveApiConfiguration: Configuration
|
||||
|
||||
/** This configuration includes the dependencies from the refines-parents */
|
||||
val transitiveImplementationConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
val transitiveImplementationConfiguration: Configuration
|
||||
|
||||
private class Impl(
|
||||
override val apiConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
override val implementationConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
override val compileOnlyConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
override val runtimeOnlyConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
override val transitiveApiConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
override val transitiveImplementationConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
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<Configuration>,
|
||||
implementationConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
compileOnlyConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
runtimeOnlyConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
transitiveApiConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
transitiveImplementationConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
apiConfiguration: Configuration,
|
||||
implementationConfiguration: Configuration,
|
||||
compileOnlyConfiguration: Configuration,
|
||||
runtimeOnlyConfiguration: Configuration,
|
||||
transitiveApiConfiguration: Configuration,
|
||||
transitiveImplementationConfiguration: Configuration
|
||||
): KotlinDependencyConfigurations = Impl(
|
||||
apiConfiguration = apiConfiguration,
|
||||
implementationConfiguration = implementationConfiguration,
|
||||
|
||||
+5
-5
@@ -18,7 +18,7 @@ interface KotlinGradleVariant : KotlinGradleFragment, KotlinModuleVariant {
|
||||
val platformType: KotlinPlatformType
|
||||
|
||||
// TODO generalize with KotlinCompilation?
|
||||
val compileDependenciesConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
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<Configuration>
|
||||
val apiElementsConfiguration: Configuration
|
||||
|
||||
val gradleVariantNames: Set<String>
|
||||
}
|
||||
|
||||
interface KotlinGradleVariantWithRuntime : KotlinGradleVariant {
|
||||
// TODO deduplicate with KotlinCompilation?
|
||||
val runtimeDependenciesConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
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<Configuration>
|
||||
val runtimeElementsConfiguration: Configuration
|
||||
}
|
||||
|
||||
interface KotlinNativeVariant : KotlinGradleVariant {
|
||||
override val platformType: KotlinPlatformType
|
||||
get() = KotlinPlatformType.native
|
||||
|
||||
val hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider<Configuration>?
|
||||
val hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
|
||||
var enableEndorsedLibraries: Boolean
|
||||
}
|
||||
|
||||
+16
-16
@@ -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)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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)
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -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")
|
||||
}
|
||||
|
||||
+1
-1
@@ -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,
|
||||
|
||||
+9
-14
@@ -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)
|
||||
|
||||
+2
-3
@@ -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>
|
||||
): Configuration
|
||||
}
|
||||
|
||||
+5
-8
@@ -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<KotlinNativeVariantInternal> {
|
||||
object KotlinHostSpecificMetadataArtifactConfigurator : KotlinGradleFragmentFactory.FragmentConfigurator<KotlinNativeVariantInternal> {
|
||||
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 })
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -17,10 +17,10 @@ open class KotlinJvmVariant(
|
||||
containingModule: KotlinGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinDependencyConfigurations,
|
||||
compileDependenciesConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
runtimeDependenciesConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
runtimeElementsConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
compileDependenciesConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
runtimeDependenciesConfiguration: Configuration,
|
||||
runtimeElementsConfiguration: Configuration
|
||||
) : KotlinGradlePublishedVariantWithRuntime(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
|
||||
+8
-21
@@ -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<KotlinJvmVariant> {
|
||||
|
||||
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)
|
||||
|
||||
+24
-24
@@ -20,9 +20,9 @@ abstract class KotlinNativeVariantInternal(
|
||||
fragmentName: String,
|
||||
val konanTarget: KonanTarget,
|
||||
dependencyConfigurations: KotlinDependencyConfigurations,
|
||||
compileDependencyConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
final override val hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider<Configuration>?
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
final override val hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariant,
|
||||
KotlinGradleVariantInternal(
|
||||
containingModule = containingModule,
|
||||
@@ -52,18 +52,18 @@ class KotlinNativeVariantConstructor<T : KotlinNativeVariantInternal>(
|
||||
containingModule: KotlinGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinDependencyConfigurations,
|
||||
compileDependencyConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider<Configuration>?
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) -> T
|
||||
) {
|
||||
operator fun invoke(
|
||||
containingModule: KotlinGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinDependencyConfigurations,
|
||||
compileDependencyConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider<Configuration>?
|
||||
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<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider<Configuration>?
|
||||
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<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider<Configuration>?
|
||||
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<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider<Configuration>?
|
||||
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<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider<Configuration>?
|
||||
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<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
hostSpecificMetadataElementsConfiguration: NamedDomainObjectProvider<Configuration>?
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
|
||||
+6
-13
@@ -44,10 +44,10 @@ class KotlinNativeVariantInstantiator<T : KotlinNativeVariantInternal>(
|
||||
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<T : KotlinNativeVariantInternal>(
|
||||
) : KotlinGradleFragmentFactory.FragmentConfigurator<T> {
|
||||
|
||||
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)
|
||||
|
||||
+1
-1
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
+11
-11
@@ -25,8 +25,8 @@ abstract class KotlinGradleVariantInternal(
|
||||
containingModule: KotlinGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinDependencyConfigurations,
|
||||
final override val compileDependenciesConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
final override val apiElementsConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
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<KotlinAttributeKey, String>
|
||||
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<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
final override val runtimeDependenciesConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
final override val runtimeElementsConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
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<Configuration>,
|
||||
apiElementsConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
runtimeDependencyConfiguration: NamedDomainObjectProvider<Configuration>,
|
||||
runtimeElementsConfiguration: NamedDomainObjectProvider<Configuration>
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
runtimeDependencyConfiguration: Configuration,
|
||||
runtimeElementsConfiguration: Configuration
|
||||
) : KotlinGradleVariantWithRuntimeInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
|
||||
+4
-6
@@ -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<Configuration> {
|
||||
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))
|
||||
|
||||
+3
-3
@@ -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<Configuration> {
|
||||
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)
|
||||
|
||||
+3
-5
@@ -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<Configuration> {
|
||||
return module.project.configurations.locateOrRegister(names.disambiguateName("hostSpecificMetadataElements")) {
|
||||
): Configuration {
|
||||
return module.project.configurations.maybeCreate(names.disambiguateName("hostSpecificMetadataElements")).apply {
|
||||
isCanBeResolved = false
|
||||
isCanBeConsumed = false
|
||||
}
|
||||
|
||||
+3
-3
@@ -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<Configuration> {
|
||||
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)
|
||||
|
||||
+5
-7
@@ -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<Configuration> {
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user