Add transitive test dependencies on MPP with jvmWithJava on import
Fixed case when production and test source sets depend on MPP module with jvmWithJava involved and have dependency on the same jar artifact.
This commit is contained in:
+9
-5
@@ -144,23 +144,27 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
||||
// processing case when one artifact could be produced by several (actualized!)source sets
|
||||
if (mppArtifacts.isNotEmpty() && resolverCtx.isResolveModulePerSourceSet) {
|
||||
val externalProject = resolverCtx.getExtraProject(gradleModule, ExternalProject::class.java)
|
||||
val artifactToDependency = HashMap<String, ExternalDependency>()
|
||||
|
||||
//Note! Should not use MultiValuesMap as it contains Set of values, but we need comparision === instead of ==
|
||||
val artifactToDependency = HashMap<String, MutableCollection<ExternalDependency>>()
|
||||
externalProject?.sourceSets?.values?.forEach { sourceSet ->
|
||||
sourceSet.dependencies.forEach { dependency ->
|
||||
dependency.getDependencyArtifacts().map { toCanonicalPath(it.absolutePath) }
|
||||
.filter { mppArtifacts.keys.contains(it) }.forEach {
|
||||
artifactToDependency[it] = dependency
|
||||
.filter { mppArtifacts.keys.contains(it) }.forEach {filePath ->
|
||||
(artifactToDependency[filePath] ?: ArrayList<ExternalDependency>().also { newCollection ->
|
||||
artifactToDependency[filePath] = newCollection
|
||||
}).add(dependency)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
// create 'fake' dependency artifact files and put them into dependency substitution map
|
||||
mppArtifacts.forEach { (k, v) ->
|
||||
artifactToDependency[k]?.apply {
|
||||
artifactToDependency[k]?.forEach { externalDependency ->
|
||||
for ((index, module) in v.withIndex()) {
|
||||
val fakeArtifact = "$k-MPP-$index"
|
||||
configArtifacts[fakeArtifact] = module
|
||||
this.addDependencyArtifactInternal(File(fakeArtifact))
|
||||
externalDependency.addDependencyArtifactInternal(File(fakeArtifact))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -586,7 +586,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
checkProjectStructure(false, false, false ) {
|
||||
module("project.javaModule.test") {
|
||||
moduleDependency("project.mppModule.jvmTest", DependencyScope.TEST, true)
|
||||
moduleDependency("project.mppModule.jvmMain", DependencyScope.TEST, false)
|
||||
moduleDependency("project.mppModule.jvmMain", DependencyScope.COMPILE, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user