[Gradle] IdeMultiplatformImport: Support LibraryBinaryIdentifier

This commit is contained in:
Sebastian Sellmair
2022-11-29 11:13:01 +01:00
committed by Space Team
parent 46928eaa0b
commit 05b8a26a17
4 changed files with 20 additions and 6 deletions
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.ide
import org.gradle.api.Project import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtensionBuilder import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtensionBuilder
@@ -162,7 +162,7 @@ interface IdeMultiplatformImport {
@JvmStatic @JvmStatic
fun instance(project: Project): IdeMultiplatformImport { fun instance(project: Project): IdeMultiplatformImport {
return project.extraProperties.getOrPut(IdeMultiplatformImport::class.java.name) { return project.extraProperties.getOrPut(IdeMultiplatformImport::class.java.name) {
IdeMultiplatformImport(project.multiplatformExtension) IdeMultiplatformImport(project.kotlinExtension)
} }
} }
} }
@@ -5,13 +5,13 @@
package org.jetbrains.kotlin.gradle.plugin.ide package org.jetbrains.kotlin.gradle.plugin.ide
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializer import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializer
import org.jetbrains.kotlin.gradle.kpm.idea.kotlinDebugKey import org.jetbrains.kotlin.gradle.kpm.idea.kotlinDebugKey
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint
import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.* import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.*
fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultiplatformImport { internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMultiplatformImport {
return IdeMultiplatformImportImpl(extension).apply { return IdeMultiplatformImportImpl(extension).apply {
registerDependencyResolver( registerDependencyResolver(
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.gradle.plugin.ide package org.jetbrains.kotlin.gradle.plugin.ide
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
import org.jetbrains.kotlin.gradle.idea.proto.tcs.toByteArray import org.jetbrains.kotlin.gradle.idea.proto.tcs.toByteArray
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinSerializationContext import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinSerializationContext
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.tooling.core.Extras
internal class IdeMultiplatformImportImpl( internal class IdeMultiplatformImportImpl(
private val extension: KotlinMultiplatformExtension private val extension: KotlinProjectExtension
) : IdeMultiplatformImport { ) : IdeMultiplatformImport {
override fun resolveDependencies(sourceSetName: String): Set<IdeaKotlinDependency> { override fun resolveDependencies(sourceSetName: String): Set<IdeaKotlinDependency> {
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers package org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers
import org.gradle.api.artifacts.ArtifactView import org.gradle.api.artifacts.ArtifactView
import org.gradle.api.artifacts.component.LibraryBinaryIdentifier
import org.gradle.api.artifacts.component.ModuleComponentIdentifier import org.gradle.api.artifacts.component.ModuleComponentIdentifier
import org.gradle.api.artifacts.component.ModuleComponentSelector import org.gradle.api.artifacts.component.ModuleComponentSelector
import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.gradle.api.artifacts.component.ProjectComponentIdentifier
@@ -96,6 +97,19 @@ internal class IdePlatformDependencyResolver(
) )
} }
is LibraryBinaryIdentifier -> {
IdeaKotlinResolvedBinaryDependency(
binaryType = binaryType,
coordinates = IdeaKotlinBinaryCoordinates(
group = componentId.projectPath + "(${componentId.variant})",
module = componentId.libraryName,
version = null, sourceSetName = null
),
binaryFile = artifact.file
)
}
is OpaqueComponentArtifactIdentifier -> { is OpaqueComponentArtifactIdentifier -> {
/* Such dependencies *would* require implementing a resolver */ /* Such dependencies *would* require implementing a resolver */
null null