Fixed dependency resolution of root project

#KT-28389 Fixed
This commit is contained in:
Andrey Uskov
2018-11-27 02:55:16 +03:00
parent 4abcd9a053
commit 620969652a
8 changed files with 109 additions and 4 deletions
@@ -329,6 +329,50 @@ class NewMultiplatformProjectImportingTest : GradleImportingTestCase() {
}
}
@Test
fun testDependencyOnRoot() {
configureByFiles()
importProject()
checkProjectStructure(exhaustiveSourceSourceRootList = false) {
module("project")
module("project_commonMain")
module("project_commonTest") {
moduleDependency("project_commonMain", DependencyScope.TEST)
}
module("project_jvmMain") {
moduleDependency("project_commonMain", DependencyScope.COMPILE)
}
module("project_jvmTest") {
moduleDependency("project_commonMain", DependencyScope.TEST)
moduleDependency("project_commonTest", DependencyScope.TEST)
moduleDependency("project_jvmMain", DependencyScope.TEST)
}
module("subproject")
module("subproject_commonMain") {
moduleDependency("project_commonMain", DependencyScope.COMPILE)
}
module("subproject_commonTest") {
moduleDependency("project_commonMain", DependencyScope.TEST)
moduleDependency("subproject_commonMain", DependencyScope.TEST)
}
module("subproject_jvmMain") {
moduleDependency("project_commonMain", DependencyScope.COMPILE)
moduleDependency("subproject_commonMain", DependencyScope.COMPILE)
moduleDependency("project_jvmMain", DependencyScope.COMPILE)
}
module("subproject_jvmTest") {
moduleDependency("project_commonMain", DependencyScope.TEST)
moduleDependency("subproject_commonMain", DependencyScope.TEST)
moduleDependency("subproject_commonTest", DependencyScope.TEST)
moduleDependency("project_jvmMain", DependencyScope.TEST)
moduleDependency("subproject_jvmMain", DependencyScope.TEST)
}
}
}
@Test
fun testNestedDependencies() {
configureByFiles()
@@ -390,7 +390,13 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
"RUNTIME" -> "getRuntimeElementsConfigurationName"
else -> return@getOrPut listOf(dependency)
}
val targets = project.rootProject.getChildProjectByPath(dependency.projectPath)?.getTargets() ?: return@getOrPut listOf(dependency)
val dependencyProject =
if (project.rootProject.path == dependency.projectPath)
project.rootProject
else
project.rootProject.getChildProjectByPath(dependency.projectPath)
val targets = dependencyProject?.getTargets() ?: return@getOrPut listOf(dependency)
val gradleTarget = targets.firstOrNull {
val getter = it.javaClass.getMethodOrNull(taskGetterName) ?: return@firstOrNull false
getter(it) == artifactConfiguration
@@ -384,7 +384,13 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
"RUNTIME" -> "getRuntimeElementsConfigurationName"
else -> return@getOrPut listOf(dependency)
}
val targets = project.rootProject.getChildProjectByPath(dependency.projectPath)?.getTargets() ?: return@getOrPut listOf(dependency)
val dependencyProject =
if (project.rootProject.path == dependency.projectPath)
project.rootProject
else
project.rootProject.getChildProjectByPath(dependency.projectPath)
val targets = dependencyProject?.getTargets() ?: return@getOrPut listOf(dependency)
val gradleTarget = targets.firstOrNull {
val getter = it.javaClass.getMethodOrNull(taskGetterName) ?: return@firstOrNull false
getter(it) == artifactConfiguration
@@ -390,7 +390,13 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
"RUNTIME" -> "getRuntimeElementsConfigurationName"
else -> return@getOrPut listOf(dependency)
}
val targets = project.rootProject.getChildProjectByPath(dependency.projectPath)?.getTargets() ?: return@getOrPut listOf(dependency)
val dependencyProject =
if (project.rootProject.path == dependency.projectPath)
project.rootProject
else
project.rootProject.getChildProjectByPath(dependency.projectPath)
val targets = dependencyProject?.getTargets() ?: return@getOrPut listOf(dependency)
val gradleTarget = targets.firstOrNull {
val getter = it.javaClass.getMethodOrNull(taskGetterName) ?: return@firstOrNull false
getter(it) == artifactConfiguration
@@ -384,7 +384,13 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
"RUNTIME" -> "getRuntimeElementsConfigurationName"
else -> return@getOrPut listOf(dependency)
}
val targets = project.rootProject.getChildProjectByPath(dependency.projectPath)?.getTargets() ?: return@getOrPut listOf(dependency)
val dependencyProject =
if (project.rootProject.path == dependency.projectPath)
project.rootProject
else
project.rootProject.getChildProjectByPath(dependency.projectPath)
val targets = dependencyProject?.getTargets() ?: return@getOrPut listOf(dependency)
val gradleTarget = targets.firstOrNull {
val getter = it.javaClass.getMethodOrNull(taskGetterName) ?: return@firstOrNull false
getter(it) == artifactConfiguration
@@ -0,0 +1,24 @@
buildscript {
repositories {
mavenLocal()
jcenter()
}
dependencies {
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.10'
}
}
allprojects {
repositories {
mavenLocal()
jcenter()
}
}
apply plugin: 'kotlin-multiplatform'
kotlin {
targets {
fromPreset(presets.jvm, 'jvm')
}
}
@@ -0,0 +1 @@
include ':subproject'
@@ -0,0 +1,12 @@
apply plugin: 'kotlin-multiplatform'
kotlin {
targets {
fromPreset(presets.jvm, 'jvm')
}
}
dependencies {
commonMainApi rootProject
}