From 6fd76a0ae6a3af14b61869580d826d709fdd56bc Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Wed, 24 Nov 2021 16:20:51 +0100 Subject: [PATCH] [Gradle] Dont fail when resolving MetadataDependencies configuration When HMPP project depends on non-mpp (ex. java) gradle project Resolving *MetadataDependencies configurations should not fail due to lack of Gradle's Kotlin MPP Extension. Simply return null when no such extension found in non-mpp project. --- .../mpp/MppDependencyProjectStructureMetadataExtractor.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MppDependencyProjectStructureMetadataExtractor.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MppDependencyProjectStructureMetadataExtractor.kt index 4bcd5e96329..46d324bad33 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MppDependencyProjectStructureMetadataExtractor.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MppDependencyProjectStructureMetadataExtractor.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.gradle.api.artifacts.result.ResolvedComponentResult -import org.jetbrains.kotlin.gradle.dsl.topLevelExtension +import org.jetbrains.kotlin.gradle.dsl.topLevelExtensionOrNull import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier import java.io.File @@ -28,10 +28,11 @@ internal class ProjectMppDependencyProjectStructureMetadataExtractor( ) : MppDependencyProjectStructureMetadataExtractor() { override fun getProjectStructureMetadata(): KotlinProjectStructureMetadata? { - return when (val topLevelExtension = dependencyProject.topLevelExtension) { + return when (val topLevelExtension = dependencyProject.topLevelExtensionOrNull) { is KotlinPm20ProjectExtension -> buildProjectStructureMetadata( topLevelExtension.modules.single { it.moduleIdentifier == moduleIdentifier } ) + null -> null else -> buildKotlinProjectStructureMetadata(dependencyProject) } }