[Gradle] Compare resolved components ignoring versions for source sets
Source Set Visibility algorithm relies on the match between metadata dependencies resolution and platform dependencies resolution. However there is a chance that they don't match in versions. i.e. commonMain resolved into 1.0 but jvmMain got 2.0 of the same library. However this discrepancy is not correct after all. And both metadata compilations and platform compilations should see the same set of libraries. This behavior will be fixed in KT-66047 ^KT-65954 Verification Pending
This commit is contained in:
committed by
Space Team
parent
32be35051d
commit
46abf63796
+14
-1
@@ -6,6 +6,9 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.component.ComponentIdentifier
|
||||
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
|
||||
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
|
||||
import org.gradle.api.artifacts.result.ResolvedDependencyResult
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
@@ -93,7 +96,7 @@ internal class SourceSetVisibilityProvider(
|
||||
val resolvedPlatformDependencies = platformCompilationData
|
||||
.resolvedDependenciesConfiguration
|
||||
.allResolvedDependencies
|
||||
.filter { it.selected.id == resolvedRootMppDependencyId }
|
||||
.filter { it.selected.id isEqualsIgnoringVersion resolvedRootMppDependencyId }
|
||||
/*
|
||||
Returning null if we can't find the given dependency in a certain platform compilations dependencies.
|
||||
This is not expected, since this means the dependency does not support the given targets which will
|
||||
@@ -198,3 +201,13 @@ internal class SourceSetVisibilityProvider(
|
||||
|
||||
internal fun kotlinVariantNameFromPublishedVariantName(resolvedToVariantName: String): String =
|
||||
originalVariantNameFromPublished(resolvedToVariantName) ?: resolvedToVariantName
|
||||
|
||||
/**
|
||||
* Returns true when two components identifiers are from the same maven module (group + name)
|
||||
* Gradle projects can't be resolved into multiple versions since there is only one version of a project in gradle build
|
||||
*/
|
||||
private infix fun ComponentIdentifier.isEqualsIgnoringVersion(that: ComponentIdentifier): Boolean {
|
||||
if (this is ProjectComponentIdentifier && that is ProjectComponentIdentifier) return this == that
|
||||
if (this is ModuleComponentIdentifier && that is ModuleComponentIdentifier) return this.moduleIdentifier == that.moduleIdentifier
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user