MPP: Add commonMain as a part of inter-project dependency
#KT-26383 Fixed
This commit is contained in:
+30
-20
@@ -408,30 +408,40 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
.mapValues { it.value.firstOrNull { it.scope == "COMPILE" } ?: it.value.lastOrNull() }
|
.mapValues { it.value.firstOrNull { it.scope == "COMPILE" } ?: it.value.lastOrNull() }
|
||||||
.values
|
.values
|
||||||
.filterNotNull()
|
.filterNotNull()
|
||||||
.map { adjustDependency(it, ideProject) }
|
.adjustDependencies(ideProject)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun adjustDependency(
|
private fun List<ExternalDependency>.adjustDependencies(ideProject: DataNode<ProjectData>): List<ExternalDependency> {
|
||||||
dependency: ExternalDependency,
|
val result = LinkedHashSet(this)
|
||||||
ideProject: DataNode<ProjectData>
|
for (dependency in this) {
|
||||||
): ExternalDependency {
|
if (dependency !is ExternalProjectDependency) continue
|
||||||
if (dependency !is ExternalProjectDependency) return dependency
|
val projectPath = dependency.projectPath
|
||||||
val projectPath = dependency.projectPath
|
val classifier = dependency.classifier ?: continue
|
||||||
val classifier = dependency.classifier ?: return dependency
|
val targetModuleNode = ExternalSystemApiUtil.findFirstRecursively(ideProject) {
|
||||||
val targetModuleNode = ExternalSystemApiUtil.findFirstRecursively(ideProject) {
|
(it.data as? ModuleData)?.id == projectPath
|
||||||
(it.data as? ModuleData)?.id == projectPath
|
} ?: continue
|
||||||
} ?: return dependency
|
val candidateDataNodes = ExternalSystemApiUtil.getChildren(targetModuleNode, GradleSourceSetData.KEY)
|
||||||
val targetCompilation = ExternalSystemApiUtil
|
if (classifier != KotlinTarget.METADATA_TARGET_NAME) {
|
||||||
.getChildren(targetModuleNode, GradleSourceSetData.KEY)
|
val compilationName = candidateDataNodes
|
||||||
.mapNotNull { sourceSetNode ->
|
.mapNotNull { sourceSetNode ->
|
||||||
sourceSetNode.kotlinSourceSet?.kotlinModule as? KotlinCompilation
|
sourceSetNode.kotlinSourceSet?.kotlinModule as? KotlinCompilation
|
||||||
|
}
|
||||||
|
.firstOrNull {
|
||||||
|
it.name == KotlinCompilation.MAIN_COMPILATION_NAME && it.target.disambiguationClassifier == classifier
|
||||||
|
}
|
||||||
|
?.fullName() ?: continue
|
||||||
|
result += DefaultExternalProjectDependency(dependency).also {
|
||||||
|
it.configurationName = compilationName
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.firstOrNull {
|
|
||||||
it.name == KotlinCompilation.MAIN_COMPILATION_NAME && it.target.disambiguationClassifier == classifier
|
result += DefaultExternalProjectDependency(dependency).also {
|
||||||
} ?: return dependency
|
it.configurationName = KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME
|
||||||
return DefaultExternalProjectDependency(dependency).also {
|
}
|
||||||
it.configurationName = targetCompilation.fullName()
|
|
||||||
|
result -= dependency
|
||||||
}
|
}
|
||||||
|
return result.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addDependency(fromModule: DataNode<*>, toModule: DataNode<*>) {
|
private fun addDependency(fromModule: DataNode<*>, toModule: DataNode<*>) {
|
||||||
|
|||||||
Reference in New Issue
Block a user