Add transitive dependencies on common MPP modules

Transitive dependencies on modules available via
'dependsOn' dependencies are added to java modules
depending on MPP projects
#KT-33025 Fixed
This commit is contained in:
Andrey Uskov
2019-07-30 01:43:37 +03:00
parent 3ce731cf7c
commit 02ee950836
8 changed files with 263 additions and 6 deletions
@@ -240,11 +240,9 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
val currentModules = userData[path] ?: ArrayList<String>().apply { userData[path] = this }
// Test modules should not be added. Otherwise we could get dependnecy of java.mail on jvmTest
val allSourceSets = target.compilations.filter { !it.isTestModule }.flatMap { it.sourceSets }.toSet()
val availableViaDependsOn = allSourceSets.flatMap { it.dependsOnSourceSets }.toSet()
allSourceSets.filter { !availableViaDependsOn.contains(it.name) }.forEach { sourceSet ->
run {
currentModules.add(getKotlinModuleId(gradleModule, sourceSet, resolverCtx))
}
val availableViaDependsOn = allSourceSets.flatMap { it.dependsOnSourceSets }.mapNotNull { mppModel.sourceSets[it] }
allSourceSets.union(availableViaDependsOn).forEach { sourceSet ->
currentModules.add(getKotlinModuleId(gradleModule, sourceSet, resolverCtx))
}
}
@@ -227,6 +227,115 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
}
}
@Test
fun testJvmWithJavaOnHMPP() {
configureByFiles()
importProject()
checkProjectStructure(true, false, true) {
module("jvm-on-mpp") {}
module("jvm-on-mpp.jvm-mod") {}
module("jvm-on-mpp.jvm-mod.main") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmAndJsMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.main", DependencyScope.COMPILE)
}
module("jvm-on-mpp.jvm-mod.test") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmAndJsMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.main", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.jvm-mod.main", DependencyScope.COMPILE)
}
module("jvm-on-mpp.hmpp-mod-a") {
}
module("jvm-on-mpp.hmpp-mod-a.commonMain") {
}
module("jvm-on-mpp.hmpp-mod-a.commonTest") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.TEST)
}
module("jvm-on-mpp.hmpp-mod-a.jsMain") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmAndJsMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.linuxAndJsMain", DependencyScope.COMPILE)
}
module("jvm-on-mpp.hmpp-mod-a.jsTest") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonTest", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jsMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmAndJsMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmAndJsTest", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.linuxAndJsMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.linuxAndJsTest", DependencyScope.TEST)
}
module("jvm-on-mpp.hmpp-mod-a.jvmAndJsMain") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.COMPILE)
}
module("jvm-on-mpp.hmpp-mod-a.jvmAndJsTest") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonTest", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmAndJsMain", DependencyScope.TEST)
}
module("jvm-on-mpp.hmpp-mod-a.jvmMain") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmAndJsMain", DependencyScope.COMPILE)
}
module("jvm-on-mpp.hmpp-mod-a.jvmTest") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonTest", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmAndJsMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmAndJsTest", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.jvmMain", DependencyScope.TEST)
}
module("jvm-on-mpp.hmpp-mod-a.linuxAndJsMain") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.COMPILE)
}
module("jvm-on-mpp.hmpp-mod-a.linuxAndJsTest") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonTest", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.linuxAndJsMain", DependencyScope.TEST)
}
module("jvm-on-mpp.hmpp-mod-a.linuxX64Main") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.COMPILE)
moduleDependency("jvm-on-mpp.hmpp-mod-a.linuxAndJsMain", DependencyScope.COMPILE)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - builtin [linux_x64]", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - iconv [linux_x64]", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - linux [linux_x64]", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - posix [linux_x64]", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - stdlib", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - zlib [linux_x64]", DependencyScope.PROVIDED)
}
module("jvm-on-mpp.hmpp-mod-a.linuxX64Test") {
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.commonTest", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.linuxAndJsMain", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.linuxAndJsTest", DependencyScope.TEST)
moduleDependency("jvm-on-mpp.hmpp-mod-a.linuxX64Main", DependencyScope.TEST)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - builtin [linux_x64]", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - iconv [linux_x64]", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - linux [linux_x64]", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - posix [linux_x64]", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - stdlib", DependencyScope.PROVIDED)
libraryDependency("Kotlin/Native 1.3.50-dev-1383 - zlib [linux_x64]", DependencyScope.PROVIDED)
}
module("jvm-on-mpp.hmpp-mod-a.main") {}
module("jvm-on-mpp.hmpp-mod-a.test") {}
}
}
private fun checkProjectStructure(
exhaustiveModuleList: Boolean = true,
exhaustiveSourceSourceRootList: Boolean = true,
@@ -591,12 +591,16 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
module("project.jvm") {}
module("project.jvm.main") {
moduleDependency("project.mpp-base.jvmMain", DependencyScope.COMPILE)
moduleDependency("project.mpp-base.commonMain", DependencyScope.COMPILE)
moduleDependency("project.mpp.jvmMain", DependencyScope.COMPILE)
moduleDependency("project.mpp.commonMain", DependencyScope.COMPILE)
}
module("project.jvm.test") {
moduleDependency("project.jvm.main", DependencyScope.COMPILE)
moduleDependency("project.mpp-base.jvmMain", DependencyScope.COMPILE)
moduleDependency("project.mpp-base.commonMain", DependencyScope.COMPILE)
moduleDependency("project.mpp.jvmMain", DependencyScope.COMPILE)
moduleDependency("project.mpp.commonMain", DependencyScope.COMPILE)
}
module("project.mpp") {}
module("project.mpp.commonMain") {
@@ -649,13 +653,16 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
module("mpp-jardep.java-project.main") {
moduleDependency("mpp-jardep.library1.jvmMain", DependencyScope.COMPILE)
moduleDependency("mpp-jardep.library2.jvmMain", DependencyScope.COMPILE)
moduleDependency("mpp-jardep.library1.commonMain", DependencyScope.COMPILE)
moduleDependency("mpp-jardep.library2.commonMain", DependencyScope.COMPILE)
}
module("mpp-jardep.java-project.test") {
moduleDependency("mpp-jardep.java-project.main", DependencyScope.COMPILE)
moduleDependency("mpp-jardep.library1.jvmMain", DependencyScope.COMPILE)
moduleDependency("mpp-jardep.library2.jvmMain", DependencyScope.COMPILE)
moduleDependency("mpp-jardep.library1.commonMain", DependencyScope.COMPILE)
moduleDependency("mpp-jardep.library2.commonMain", DependencyScope.COMPILE)
}
module("mpp-jardep.library1") {}
@@ -719,11 +726,13 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
module("jvm-on-mpp.jvm-mod") {}
module("jvm-on-mpp.jvm-mod.main") {
moduleDependency("jvm-on-mpp.mpp-mod-a.jvmMain", DependencyScope.COMPILE, false)
moduleDependency("jvm-on-mpp.mpp-mod-a.commonMain", DependencyScope.COMPILE, false)
moduleDependency("jvm-on-mpp.mpp-mod-a.main", DependencyScope.COMPILE, false)
}
module("jvm-on-mpp.jvm-mod.test") {
moduleDependency("jvm-on-mpp.jvm-mod.main", DependencyScope.COMPILE, false)
moduleDependency("jvm-on-mpp.mpp-mod-a.jvmMain", DependencyScope.COMPILE, false)
moduleDependency("jvm-on-mpp.mpp-mod-a.commonMain", DependencyScope.COMPILE, false)
moduleDependency("jvm-on-mpp.mpp-mod-a.main", DependencyScope.COMPILE, false)
}