[MPP] Don't apply common parts of IDE import resolution for JVM+Android

- Don't resolve common parts of MPP libraries
- Filter out kotlin-stdlib-common

KT-56453
This commit is contained in:
Pavel Kirpichenkov
2023-02-09 16:05:11 +02:00
committed by Space Team
parent 6e434748d1
commit 1b8c517e1e
2 changed files with 54 additions and 7 deletions
@@ -67,7 +67,7 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
registerDependencyResolver(
resolver = IdeTransformedMetadataDependencyResolver,
constraint = !SourceSetConstraint.isLeaf,
constraint = !SourceSetConstraint.isLeaf and !SourceSetConstraint.isJvmAndAndroid,
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
)
@@ -150,7 +150,8 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
registerDependencyTransformer(
transformer = IdePlatformStdlibCommonDependencyFilter,
constraint = SourceSetConstraint.isSinglePlatformType and !SourceSetConstraint.isSharedNative,
constraint = SourceSetConstraint.isSinglePlatformType and !SourceSetConstraint.isSharedNative
or SourceSetConstraint.isJvmAndAndroid,
phase = IdeMultiplatformImport.DependencyTransformationPhase.DependencyFilteringPhase,
)
@@ -9,13 +9,13 @@ package org.jetbrains.kotlin.gradle.dependencyResolutionTests.tcs
import org.jetbrains.kotlin.gradle.dependencyResolutionTests.mavenCentralCacheRedirector
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryDependency
import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.assertMatches
import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.binaryCoordinates
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.IdeTransformedMetadataDependencyResolver
import org.jetbrains.kotlin.gradle.util.applyMultiplatformPlugin
import org.jetbrains.kotlin.gradle.util.buildProject
import org.jetbrains.kotlin.gradle.util.enableDefaultStdlibDependency
import org.jetbrains.kotlin.gradle.util.enableDependencyVerification
import org.jetbrains.kotlin.gradle.plugin.ide.kotlinIdeMultiplatformImport
import org.jetbrains.kotlin.gradle.util.*
import org.junit.Test
class IdeTransformedMetadataDependencyResolverTest {
@@ -68,4 +68,50 @@ class IdeTransformedMetadataDependencyResolverTest {
binaryCoordinates("com.arkivanov.essenty:instance-keeper:0.4.2:commonMain")
)
}
}
@Test
fun `test OKIO in JVM + Android project`() {
val project = buildProject {
enableDependencyVerification(false)
applyMultiplatformPlugin()
repositories.mavenLocal()
repositories.mavenCentralCacheRedirector()
repositories.google()
androidLibrary {
compileSdkVersion = "android-31"
}
}
val kotlin = project.multiplatformExtension
kotlin.jvm()
kotlin.android()
val commonMain = kotlin.sourceSets.getByName("commonMain")
val commonTest = kotlin.sourceSets.getByName("commonTest")
commonMain.dependencies {
implementation("com.squareup.okio:okio:3.2.0")
}
project.evaluate()
fun KotlinSourceSet.binaryDependencies() =
project.kotlinIdeMultiplatformImport.resolveDependencies(this).filterIsInstance<IdeaKotlinBinaryDependency>()
commonMain.binaryDependencies().assertMatches(
binaryCoordinates("com.squareup.okio:okio-jvm:3.2.0"),
binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20"),
binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.20"),
binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib:1.6.20"),
binaryCoordinates("org.jetbrains:annotations:13.0"),
)
commonTest.binaryDependencies().assertMatches(
binaryCoordinates("com.squareup.okio:okio-jvm:3.2.0"),
binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20"),
binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.20"),
binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib:1.6.20"),
binaryCoordinates("org.jetbrains:annotations:13.0"),
)
}
}