diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt index 7301363f11a..443c09ec1ec 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt @@ -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()) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformDependencyResolver.kt index a43669cd692..bfaffc8ca2a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformDependencyResolver.kt @@ -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 :( */