[Gradle] Workaround KT-55222 via reflection to make the project compilable

This commit is contained in:
Vyacheslav Karpukhin
2022-12-02 21:43:58 +01:00
parent ebf24c2d24
commit 91749737f8
@@ -34,6 +34,7 @@ import org.gradle.api.services.BuildServiceParameters
import org.gradle.api.services.BuildServiceRegistry
import org.gradle.internal.component.local.model.DefaultLocalComponentGraphResolveState
import org.gradle.internal.component.model.AttributeConfigurationSelector
import org.gradle.internal.component.model.ComponentResolveMetadata
import org.gradle.internal.component.model.ConfigurationMetadata
import org.gradle.internal.component.model.IvyArtifactName
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
@@ -45,6 +46,7 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import java.io.File
import java.nio.file.Path
import kotlin.reflect.KFunction
import kotlin.reflect.full.functions
import kotlin.reflect.full.staticFunctions
data class AndroidDependency(
@@ -323,8 +325,12 @@ object AndroidDependencyResolver {
attributes: AttributeContainer,
attributesSchema: AttributesSchema,
) = projectDependencies.mapNotNull { projectDependency ->
val rootComponentMetaData = (projectDependency.findProjectConfiguration() as? ConfigurationInternal)?.toRootComponentMetaData()
?: return@mapNotNull null
val configurationInternal = projectDependency.findProjectConfiguration() as? ConfigurationInternal ?: return@mapNotNull null
@Suppress("UNCHECKED_CAST") val toRootComponentMetadata =
(configurationInternal::class.functions.find { it.name == "toRootComponentMetaData" } as? KFunction<ComponentResolveMetadata>
?: error("Method ConfigurationInternal.toRootComponentMetaData does not exist"))
val rootComponentMetaData = toRootComponentMetadata.call(configurationInternal)
@Suppress("UNCHECKED_CAST") val selectConfiguration =
AttributeConfigurationSelector::class.staticFunctions.find { it.name == "selectConfigurationUsingAttributeMatching" } as? KFunction<ConfigurationMetadata>