Gradle: Support 'expectedBy' configuration
This commit is contained in:
+46
@@ -66,6 +66,52 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() {
|
|||||||
assertModuleModuleDepScope("js_test", "common_test", DependencyScope.COMPILE)
|
assertModuleModuleDepScope("js_test", "common_test", DependencyScope.COMPILE)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testPlatformToCommonExpectedByDependency() {
|
||||||
|
createProjectSubFile("settings.gradle", "include ':common', ':jvm', ':js'")
|
||||||
|
|
||||||
|
val kotlinVersion = "1.2.0-beta-74"
|
||||||
|
|
||||||
|
createProjectSubFile("build.gradle", """
|
||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven { url 'http://dl.bintray.com/kotlin/kotlin-dev' }
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
project('common') {
|
||||||
|
apply plugin: 'kotlin-platform-common'
|
||||||
|
}
|
||||||
|
|
||||||
|
project('jvm') {
|
||||||
|
apply plugin: 'kotlin-platform-jvm'
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
expectedBy project(':common')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
project('js') {
|
||||||
|
apply plugin: 'kotlin-platform-js'
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
expectedBy project(':common')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
""")
|
||||||
|
|
||||||
|
importProject()
|
||||||
|
assertModuleModuleDepScope("jvm_main", "common_main", DependencyScope.COMPILE)
|
||||||
|
assertModuleModuleDepScope("jvm_test", "common_test", DependencyScope.COMPILE)
|
||||||
|
assertModuleModuleDepScope("js_main", "common_main", DependencyScope.COMPILE)
|
||||||
|
assertModuleModuleDepScope("js_test", "common_test", DependencyScope.COMPILE)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testPlatformToCommonDependencyRoot() {
|
fun testPlatformToCommonDependencyRoot() {
|
||||||
createProjectSubFile("settings.gradle", "rootProject.name = 'foo'\ninclude ':jvm', ':js'")
|
createProjectSubFile("settings.gradle", "rootProject.name = 'foo'\ninclude ':jvm', ':js'")
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ package org.jetbrains.kotlin.gradle
|
|||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
|
import org.gradle.api.artifacts.Dependency
|
||||||
import org.gradle.api.artifacts.ProjectDependency
|
import org.gradle.api.artifacts.ProjectDependency
|
||||||
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
|
import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
|
||||||
import org.jetbrains.plugins.gradle.tooling.ModelBuilderService
|
import org.jetbrains.plugins.gradle.tooling.ModelBuilderService
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -87,9 +89,10 @@ class KotlinGradleModelBuilder : AbstractKotlinGradleModelBuilder() {
|
|||||||
override fun canBuild(modelName: String?): Boolean = modelName == KotlinGradleModel::class.java.name
|
override fun canBuild(modelName: String?): Boolean = modelName == KotlinGradleModel::class.java.name
|
||||||
|
|
||||||
private fun getImplements(project: Project): Project? {
|
private fun getImplements(project: Project): Project? {
|
||||||
val implementsConfiguration = project.configurations.run { findByName("implement") } ?: return null
|
return listOf("expectedBy", "implement")
|
||||||
val implementsProjectDependency = implementsConfiguration.dependencies.filterIsInstance<ProjectDependency>().firstOrNull()
|
.flatMap { project.configurations.findByName(it)?.dependencies ?: emptySet<Dependency>() }
|
||||||
return implementsProjectDependency?.dependencyProject
|
.firstIsInstanceOrNull<ProjectDependency>()
|
||||||
|
?.dependencyProject
|
||||||
}
|
}
|
||||||
|
|
||||||
// see GradleProjectResolverUtil.getModuleId() in IDEA codebase
|
// see GradleProjectResolverUtil.getModuleId() in IDEA codebase
|
||||||
|
|||||||
Reference in New Issue
Block a user