[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.dsl.KotlinMultiplatformExtension
|
||||||
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.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.ide.dependencyResolvers.*
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
||||||
|
|
||||||
fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultiplatformImport {
|
fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultiplatformImport {
|
||||||
return IdeMultiplatformImportImpl(extension).apply {
|
return IdeMultiplatformImportImpl(extension).apply {
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeDependsOnDependencyResolver,
|
resolver = IdeDependsOnDependencyResolver,
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint.unconstrained,
|
constraint = SourceSetConstraint.unconstrained,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeFriendSourceDependencyResolver,
|
resolver = IdeFriendSourceDependencyResolver,
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint.unconstrained,
|
constraint = SourceSetConstraint.unconstrained,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeVisibleMultiplatformSourceDependencyResolver,
|
resolver = IdeVisibleMultiplatformSourceDependencyResolver,
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint.unconstrained,
|
constraint = SourceSetConstraint.unconstrained,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeJvmAndAndroidSourceDependencyResolver,
|
resolver = IdeJvmAndAndroidSourceDependencyResolver,
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint.unconstrained,
|
constraint = SourceSetConstraint.unconstrained,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeTransformedMetadataDependencyResolver,
|
resolver = IdeTransformedMetadataDependencyResolver,
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isMetadata,
|
constraint = SourceSetConstraint.isMetadata,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeOriginalMetadataDependencyResolver,
|
resolver = IdeOriginalMetadataDependencyResolver,
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isMetadata,
|
constraint = SourceSetConstraint.isMetadata,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdePlatformDependencyResolver(),
|
resolver = IdePlatformDependencyResolver(),
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isPlatform,
|
constraint = SourceSetConstraint.isPlatform,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
@@ -68,14 +71,14 @@ fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultipla
|
|||||||
*/
|
*/
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeJvmAndAndroidPlatformBinaryDependencyResolver(extension.project),
|
resolver = IdeJvmAndAndroidPlatformBinaryDependencyResolver(extension.project),
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isJvmAndAndroid,
|
constraint = SourceSetConstraint.isJvmAndAndroid,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeNativePlatformDependencyResolver,
|
resolver = IdeNativePlatformDependencyResolver,
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint.isNative,
|
constraint = SourceSetConstraint.isNative,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
@@ -87,6 +90,16 @@ fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultipla
|
|||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
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 {
|
registerExtrasSerializationExtension {
|
||||||
register(kotlinDebugKey, IdeaKotlinExtrasSerializer.javaIoSerializable())
|
register(kotlinDebugKey, IdeaKotlinExtrasSerializer.javaIoSerializable())
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -61,7 +61,7 @@ internal class IdePlatformDependencyResolver(
|
|||||||
val artifacts = artifactResolutionStrategy.createArtifactView(sourceSet.internal)?.artifacts ?: return emptySet()
|
val artifacts = artifactResolutionStrategy.createArtifactView(sourceSet.internal)?.artifacts ?: return emptySet()
|
||||||
|
|
||||||
val unresolvedDependencies = artifacts.failures
|
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 ->
|
.map { reason ->
|
||||||
val selector = (reason as? ModuleVersionResolveException)?.selector as? ModuleComponentSelector
|
val selector = (reason as? ModuleVersionResolveException)?.selector as? ModuleComponentSelector
|
||||||
/* Can't figure out the dependency here :( */
|
/* Can't figure out the dependency here :( */
|
||||||
|
|||||||
Reference in New Issue
Block a user