[Gradle] Workaround KT-55222 via reflection to make the project compilable
This commit is contained in:
+8
-2
@@ -34,6 +34,7 @@ import org.gradle.api.services.BuildServiceParameters
|
|||||||
import org.gradle.api.services.BuildServiceRegistry
|
import org.gradle.api.services.BuildServiceRegistry
|
||||||
import org.gradle.internal.component.local.model.DefaultLocalComponentGraphResolveState
|
import org.gradle.internal.component.local.model.DefaultLocalComponentGraphResolveState
|
||||||
import org.gradle.internal.component.model.AttributeConfigurationSelector
|
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.ConfigurationMetadata
|
||||||
import org.gradle.internal.component.model.IvyArtifactName
|
import org.gradle.internal.component.model.IvyArtifactName
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
|
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.io.File
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import kotlin.reflect.KFunction
|
import kotlin.reflect.KFunction
|
||||||
|
import kotlin.reflect.full.functions
|
||||||
import kotlin.reflect.full.staticFunctions
|
import kotlin.reflect.full.staticFunctions
|
||||||
|
|
||||||
data class AndroidDependency(
|
data class AndroidDependency(
|
||||||
@@ -323,8 +325,12 @@ object AndroidDependencyResolver {
|
|||||||
attributes: AttributeContainer,
|
attributes: AttributeContainer,
|
||||||
attributesSchema: AttributesSchema,
|
attributesSchema: AttributesSchema,
|
||||||
) = projectDependencies.mapNotNull { projectDependency ->
|
) = projectDependencies.mapNotNull { projectDependency ->
|
||||||
val rootComponentMetaData = (projectDependency.findProjectConfiguration() as? ConfigurationInternal)?.toRootComponentMetaData()
|
val configurationInternal = projectDependency.findProjectConfiguration() as? ConfigurationInternal ?: return@mapNotNull null
|
||||||
?: 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 =
|
@Suppress("UNCHECKED_CAST") val selectConfiguration =
|
||||||
AttributeConfigurationSelector::class.staticFunctions.find { it.name == "selectConfigurationUsingAttributeMatching" } as? KFunction<ConfigurationMetadata>
|
AttributeConfigurationSelector::class.staticFunctions.find { it.name == "selectConfigurationUsingAttributeMatching" } as? KFunction<ConfigurationMetadata>
|
||||||
|
|||||||
Reference in New Issue
Block a user