[Gradle] IdeMultiplatformImport: Force empty binary resolve for Android dependencies
KT-55112
This commit is contained in:
committed by
Space Team
parent
90248f4e44
commit
0aad848757
+22
-9
@@ -8,56 +8,59 @@ package org.jetbrains.kotlin.gradle.plugin.ide
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializer
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.kotlinDebugKey
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.androidJvm
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
||||
|
||||
fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultiplatformImport {
|
||||
return IdeMultiplatformImportImpl(extension).apply {
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeDependsOnDependencyResolver,
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint.unconstrained,
|
||||
constraint = SourceSetConstraint.unconstrained,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeFriendSourceDependencyResolver,
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint.unconstrained,
|
||||
constraint = SourceSetConstraint.unconstrained,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeVisibleMultiplatformSourceDependencyResolver,
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint.unconstrained,
|
||||
constraint = SourceSetConstraint.unconstrained,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeJvmAndAndroidSourceDependencyResolver,
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint.unconstrained,
|
||||
constraint = SourceSetConstraint.unconstrained,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeTransformedMetadataDependencyResolver,
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isMetadata,
|
||||
constraint = SourceSetConstraint.isMetadata,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeOriginalMetadataDependencyResolver,
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isMetadata,
|
||||
constraint = SourceSetConstraint.isMetadata,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdePlatformDependencyResolver(),
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isPlatform,
|
||||
constraint = SourceSetConstraint.isPlatform,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
)
|
||||
@@ -68,14 +71,14 @@ fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultipla
|
||||
*/
|
||||
registerDependencyResolver(
|
||||
resolver = IdeJvmAndAndroidPlatformBinaryDependencyResolver(extension.project),
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isJvmAndAndroid,
|
||||
constraint = SourceSetConstraint.isJvmAndAndroid,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeNativePlatformDependencyResolver,
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isNative,
|
||||
constraint = SourceSetConstraint.isNative,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
)
|
||||
@@ -87,6 +90,16 @@ fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultipla
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
||||
)
|
||||
|
||||
/* Overwrite android dependencies by empty resolver */
|
||||
registerDependencyResolver(
|
||||
resolver = IdeDependencyResolver.Empty,
|
||||
constraint = SourceSetConstraint { sourceSet ->
|
||||
sourceSet.internal.compilations.map { it.platformType }.toSet() == setOf(androidJvm)
|
||||
},
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Overwrite
|
||||
)
|
||||
|
||||
registerExtrasSerializationExtension {
|
||||
register(kotlinDebugKey, IdeaKotlinExtrasSerializer.javaIoSerializable())
|
||||
}
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ internal class IdePlatformDependencyResolver(
|
||||
val artifacts = artifactResolutionStrategy.createArtifactView(sourceSet.internal)?.artifacts ?: return emptySet()
|
||||
|
||||
val unresolvedDependencies = artifacts.failures
|
||||
.onEach { reason -> sourceSet.project.logger.error("Failed to resolve dependency", reason) }
|
||||
.onEach { reason -> sourceSet.project.logger.error("Failed to resolve platform dependency on ${sourceSet.name}", reason) }
|
||||
.map { reason ->
|
||||
val selector = (reason as? ModuleVersionResolveException)?.selector as? ModuleComponentSelector
|
||||
/* Can't figure out the dependency here :( */
|
||||
|
||||
Reference in New Issue
Block a user