KT-MR-5666 Use SetProperty for artifacts in place of ListProperty

This commit is contained in:
Sergey Igushkin
2022-02-08 16:25:08 +04:00
committed by Space
parent b926f3ea2f
commit faf2f3e48d
5 changed files with 17 additions and 8 deletions
@@ -16,7 +16,7 @@ import org.gradle.api.component.ComponentWithVariants
import org.gradle.api.component.SoftwareComponent import org.gradle.api.component.SoftwareComponent
import org.gradle.api.internal.component.SoftwareComponentInternal import org.gradle.api.internal.component.SoftwareComponentInternal
import org.gradle.api.internal.component.UsageContext import org.gradle.api.internal.component.UsageContext
import org.gradle.api.provider.ListProperty import org.gradle.api.provider.SetProperty
import org.gradle.api.publish.maven.MavenPublication import org.gradle.api.publish.maven.MavenPublication
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigur
import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
import org.jetbrains.kotlin.gradle.utils.listProperty import org.jetbrains.kotlin.gradle.utils.listProperty
import org.jetbrains.kotlin.gradle.utils.setProperty
abstract class KotlinSoftwareComponent( abstract class KotlinSoftwareComponent(
private val project: Project, private val project: Project,
@@ -69,7 +70,7 @@ abstract class KotlinSoftwareComponent(
compilation = metadataTarget.compilations.getByName(MAIN_COMPILATION_NAME), compilation = metadataTarget.compilations.getByName(MAIN_COMPILATION_NAME),
usage = javaApiUsage, usage = javaApiUsage,
dependencyConfigurationName = metadataTarget.apiElementsConfigurationName, dependencyConfigurationName = metadataTarget.apiElementsConfigurationName,
overrideConfigurationArtifacts = project.listProperty { listOf(allMetadataArtifact) } overrideConfigurationArtifacts = project.setProperty { listOf(allMetadataArtifact) }
) )
@@ -128,7 +129,7 @@ class DefaultKotlinUsageContext(
override val compilation: KotlinCompilation<*>, override val compilation: KotlinCompilation<*>,
private val usage: Usage, private val usage: Usage,
override val dependencyConfigurationName: String, override val dependencyConfigurationName: String,
internal val overrideConfigurationArtifacts: ListProperty<PublishArtifact>? = null, internal val overrideConfigurationArtifacts: SetProperty<PublishArtifact>? = null,
internal val overrideConfigurationAttributes: AttributeContainer? = null, internal val overrideConfigurationAttributes: AttributeContainer? = null,
override val includeIntoProjectStructureMetadata: Boolean = true override val includeIntoProjectStructureMetadata: Boolean = true
) : KotlinUsageContext { ) : KotlinUsageContext {
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
import org.jetbrains.kotlin.gradle.utils.listProperty import org.jetbrains.kotlin.gradle.utils.listProperty
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.gradle.utils.setProperty
open class KotlinAndroidTarget( open class KotlinAndroidTarget(
override val targetName: String, override val targetName: String,
@@ -206,7 +207,7 @@ open class KotlinAndroidTarget(
compilation, compilation,
project.usageByName(usageName), project.usageByName(usageName),
dependencyConfigurationName, dependencyConfigurationName,
overrideConfigurationArtifacts = project.listProperty { listOf(artifact) }, overrideConfigurationArtifacts = project.setProperty { listOf(artifact) },
overrideConfigurationAttributes = HierarchyAttributeContainer(configuration.attributes) { overrideConfigurationAttributes = HierarchyAttributeContainer(configuration.attributes) {
val valueString = run { val valueString = run {
val value = configuration.attributes.getAttribute(it) val value = configuration.attributes.getAttribute(it)
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.gradle.testing.testTaskName
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
import org.jetbrains.kotlin.gradle.utils.listProperty import org.jetbrains.kotlin.gradle.utils.listProperty
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.gradle.utils.setProperty
import javax.inject.Inject import javax.inject.Inject
open class KotlinJsTarget open class KotlinJsTarget
@@ -102,7 +103,7 @@ constructor(
compilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME), compilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME),
usage = project.usageByName("java-api-jars"), usage = project.usageByName("java-api-jars"),
dependencyConfigurationName = commonFakeApiElementsConfigurationName, dependencyConfigurationName = commonFakeApiElementsConfigurationName,
overrideConfigurationArtifacts = project.listProperty { emptyList() } overrideConfigurationArtifacts = project.setProperty { emptyList() }
) )
} }
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.tasks.registerTask
import org.jetbrains.kotlin.gradle.utils.listProperty import org.jetbrains.kotlin.gradle.utils.listProperty
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.gradle.utils.setProperty
import javax.inject.Inject import javax.inject.Inject
open class KotlinJsIrTarget open class KotlinJsIrTarget
@@ -68,7 +69,7 @@ constructor(
compilation = compilations.getByName(MAIN_COMPILATION_NAME), compilation = compilations.getByName(MAIN_COMPILATION_NAME),
usage = project.usageByName("java-api-jars"), usage = project.usageByName("java-api-jars"),
dependencyConfigurationName = commonFakeApiElementsConfigurationName, dependencyConfigurationName = commonFakeApiElementsConfigurationName,
overrideConfigurationArtifacts = project.listProperty { emptyList() } overrideConfigurationArtifacts = project.setProperty { emptyList() }
) )
} }
@@ -10,8 +10,10 @@ import org.gradle.api.Task
import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.RegularFileProperty import org.gradle.api.file.RegularFileProperty
import org.gradle.api.model.ObjectFactory import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider import org.gradle.api.provider.Provider
import org.gradle.api.provider.SetProperty
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import java.io.File import java.io.File
import kotlin.properties.ReadOnlyProperty import kotlin.properties.ReadOnlyProperty
@@ -98,5 +100,8 @@ internal fun <T : Task> T.outputFilesProvider(provider: T.() -> Any): Configurab
return project.filesProvider(this) { provider() } return project.filesProvider(this) { provider() }
} }
internal inline fun <reified T> Project.listProperty(noinline itemsProvider: () -> Iterable<T>) = internal inline fun <reified T> Project.listProperty(noinline itemsProvider: () -> Iterable<T>): ListProperty<T> =
objects.listProperty(T::class.java).apply { set(provider(itemsProvider)) } objects.listProperty(T::class.java).apply { set(provider(itemsProvider)) }
internal inline fun <reified T> Project.setProperty(noinline itemsProvider: () -> Iterable<T>): SetProperty<T> =
objects.setProperty(T::class.java).apply { set(provider(itemsProvider)) }