[Gradle] Ide Dependency Resolution: Provide attributes for binary coordinates
^KT-60053 Verification Pending
This commit is contained in:
committed by
Space Team
parent
6140854fa6
commit
3032d02ce9
+4
-6
@@ -19,11 +19,8 @@ import org.jetbrains.kotlin.gradle.idea.tcs.extras.isIdeaProjectLevel
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver.Companion.gradleArtifact
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeaKotlinBinaryCapability
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeaKotlinBinaryCoordinates
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeaKotlinProjectCoordinates
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.IdeBinaryDependencyResolver.ArtifactResolutionStrategy
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationConfigurationsContainer
|
||||
@@ -153,7 +150,7 @@ class IdeBinaryDependencyResolver @JvmOverloads constructor(
|
||||
|
||||
is ModuleComponentIdentifier -> {
|
||||
IdeaKotlinResolvedBinaryDependency(
|
||||
coordinates = IdeaKotlinBinaryCoordinates(componentId, artifact.variant.capabilities),
|
||||
coordinates = IdeaKotlinBinaryCoordinates(componentId, artifact.variant.capabilities, artifact.variant.attributes),
|
||||
binaryType = binaryType,
|
||||
classpath = IdeaKotlinClasspath(artifact.file),
|
||||
)
|
||||
@@ -166,7 +163,8 @@ class IdeBinaryDependencyResolver @JvmOverloads constructor(
|
||||
module = componentId.libraryName,
|
||||
version = null,
|
||||
sourceSetName = null,
|
||||
capabilities = artifact.variant.capabilities.map(::IdeaKotlinBinaryCapability).toSet()
|
||||
capabilities = artifact.variant.capabilities.map(::IdeaKotlinBinaryCapability).toSet(),
|
||||
attributes = IdeaKotlinBinaryAttributes(artifact.variant.attributes)
|
||||
), classpath = IdeaKotlinClasspath(artifact.file)
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -34,8 +34,8 @@ internal object IdeOriginalMetadataDependencyResolver : IdeDependencyResolver {
|
||||
IdeaKotlinResolvedBinaryDependency(
|
||||
binaryType = IdeaKotlinBinaryDependency.KOTLIN_COMPILE_BINARY_TYPE,
|
||||
classpath = IdeaKotlinClasspath(artifact.file),
|
||||
coordinates = IdeaKotlinBinaryCoordinates(moduleId)
|
||||
coordinates = IdeaKotlinBinaryCoordinates(moduleId, artifact.variant.capabilities, artifact.variant.attributes)
|
||||
)
|
||||
}.toSet()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+11
-5
@@ -8,11 +8,9 @@ package org.jetbrains.kotlin.gradle.plugin.ide
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
|
||||
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
|
||||
import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.capabilities.Capability
|
||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryCapability
|
||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryCoordinates
|
||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinProjectCoordinates
|
||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinSourceCoordinates
|
||||
import org.jetbrains.kotlin.gradle.idea.tcs.*
|
||||
import org.jetbrains.kotlin.gradle.idea.tcs.extras.KlibExtra
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId
|
||||
@@ -45,12 +43,14 @@ internal fun IdeaKotlinSourceCoordinates(sourceSet: KotlinSourceSet): IdeaKotlin
|
||||
internal fun IdeaKotlinBinaryCoordinates(
|
||||
identifier: ModuleComponentIdentifier,
|
||||
capabilities: List<Capability> = emptyList(),
|
||||
attributes: AttributeContainer,
|
||||
): IdeaKotlinBinaryCoordinates {
|
||||
return IdeaKotlinBinaryCoordinates(
|
||||
group = identifier.group,
|
||||
module = identifier.module,
|
||||
version = identifier.version,
|
||||
capabilities = capabilities.map(::IdeaKotlinBinaryCapability).toSet()
|
||||
capabilities = capabilities.map(::IdeaKotlinBinaryCapability).toSet(),
|
||||
attributes = IdeaKotlinBinaryAttributes(attributes)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -62,6 +62,12 @@ internal fun IdeaKotlinBinaryCapability(capability: Capability): IdeaKotlinBinar
|
||||
)
|
||||
}
|
||||
|
||||
internal fun IdeaKotlinBinaryAttributes(attributes: AttributeContainer): IdeaKotlinBinaryAttributes {
|
||||
return IdeaKotlinBinaryAttributes(
|
||||
attributes.keySet().associate { key -> key.name to attributes.getAttribute(key).toString() }
|
||||
)
|
||||
}
|
||||
|
||||
internal fun KlibExtra(library: KotlinLibrary): KlibExtra {
|
||||
return KlibExtra(
|
||||
builtInsPlatform = library.builtInsPlatform,
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("FunctionName")
|
||||
|
||||
package org.jetbrains.kotlin.gradle.unitTests
|
||||
|
||||
import org.gradle.api.attributes.Category
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeaKotlinBinaryAttributes
|
||||
import org.jetbrains.kotlin.gradle.util.buildProject
|
||||
import org.jetbrains.kotlin.gradle.utils.named
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class IdeaKotlinBinaryAttributesFactoryTest {
|
||||
|
||||
@Test
|
||||
fun `test - sample 0`() {
|
||||
val project = buildProject()
|
||||
|
||||
val dummyConfiguration = project.configurations.create("dummy")
|
||||
val container = dummyConfiguration.attributes
|
||||
container.attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_API))
|
||||
container.attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.DOCUMENTATION))
|
||||
|
||||
assertEquals(
|
||||
mapOf(
|
||||
"org.gradle.usage" to "java-api",
|
||||
"org.gradle.category" to "documentation"
|
||||
), IdeaKotlinBinaryAttributes(container)
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user