Exclude stdlib-common from jvm-specific compilations and source sets
^KT-46936 Fixed Note that it is the slightly hack-ish fix; the proper one would remove the dependency from kotlin-stdlib to kotlin-stdlib-common
This commit is contained in:
committed by
teamcityserver
parent
fa869c2c2a
commit
4f8c854ead
+177
-5
@@ -55,8 +55,8 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions()
|
||||
fun testImportIntermediateModules() {
|
||||
@PluginTargetVersions(pluginVersion = "<1.5.30")
|
||||
fun testImportIntermediateModules_old() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
|
||||
@@ -230,6 +230,180 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(pluginVersion = "1.5.30+")
|
||||
fun testImportIntermediateModules_new() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
|
||||
checkProjectStructure {
|
||||
module("my-app")
|
||||
module("my-app.commonMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, JvmPlatforms.jvm16, NativePlatforms.unspecifiedNativePlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
sourceFolder("src/commonMain/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/commonMain/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("my-app.commonTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, JvmPlatforms.jvm16, NativePlatforms.unspecifiedNativePlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.TEST)
|
||||
sourceFolder("src/commonTest/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/commonTest/resources", TestResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("my-app.jsMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-js:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.COMPILE)
|
||||
moduleDependency("my-app.jvmAndJsMain", DependencyScope.COMPILE)
|
||||
moduleDependency("my-app.linuxAndJsMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/jsMain/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/jsMain/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("my-app.jsTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-js:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-js:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("my-app.jsMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.jsMain", DependencyScope.RUNTIME) // Temporary dependency, need to remove after KT-40551 is solved
|
||||
moduleDependency("my-app.jvmAndJsMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.jvmAndJsTest", DependencyScope.TEST)
|
||||
moduleDependency("my-app.linuxAndJsMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.linuxAndJsTest", DependencyScope.TEST)
|
||||
sourceFolder("src/jsTest/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/jsTest/resources", TestResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("my-app.jvmAndJsMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/jvmAndJsMain/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/jvmAndJsMain/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("my-app.jvmAndJsTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("my-app.jvmAndJsMain", DependencyScope.TEST)
|
||||
sourceFolder("src/jvmAndJsTest/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/jvmAndJsTest/resources", TestResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("my-app.jvmMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.COMPILE)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.COMPILE)
|
||||
moduleDependency("my-app.jvmAndJsMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/jvmMain/kotlin", JavaSourceRootType.SOURCE)
|
||||
sourceFolder("src/jvmMain/resources", JavaResourceRootType.RESOURCE)
|
||||
}
|
||||
|
||||
module("my-app.jvmTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: junit:junit:4.12", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.hamcrest:hamcrest-core:1.3", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-junit:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("my-app.jvmAndJsMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.jvmAndJsTest", DependencyScope.TEST)
|
||||
moduleDependency("my-app.jvmMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.jvmMain", DependencyScope.RUNTIME) // Temporary dependency, need to remove after KT-40551 is solved
|
||||
sourceFolder("src/jvmTest/kotlin", JavaSourceRootType.TEST_SOURCE)
|
||||
sourceFolder("src/jvmTest/resources", JavaResourceRootType.TEST_RESOURCE)
|
||||
}
|
||||
|
||||
module("my-app.linuxAndJsMain") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, NativePlatforms.unspecifiedNativePlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/linuxAndJsMain/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/linuxAndJsMain/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("my-app.linuxAndJsTest") {
|
||||
isHMPP(true)
|
||||
targetPlatform(JsPlatforms.defaultJsPlatform, NativePlatforms.unspecifiedNativePlatform)
|
||||
sourceFolder("src/linuxAndJsTest/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/linuxAndJsTest/resources", TestResourceKotlinRootType)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("my-app.linuxAndJsMain", DependencyScope.TEST)
|
||||
}
|
||||
|
||||
module("my-app.linuxX64Main") {
|
||||
isHMPP(true)
|
||||
targetPlatform(NativePlatforms.nativePlatformBySingleTarget(KonanTarget.LINUX_X64))
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - builtin [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - iconv [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - linux [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - posix [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - stdlib", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - zlib [linux_x64]", DependencyScope.PROVIDED)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.COMPILE)
|
||||
moduleDependency("my-app.linuxAndJsMain", DependencyScope.COMPILE)
|
||||
sourceFolder("src/linuxX64Main/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("src/linuxX64Main/resources", ResourceKotlinRootType)
|
||||
}
|
||||
|
||||
module("my-app.linuxX64Test") {
|
||||
isHMPP(true)
|
||||
targetPlatform(NativePlatforms.nativePlatformBySingleTarget(KonanTarget.LINUX_X64))
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-test-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - builtin [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - iconv [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - linux [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - posix [linux_x64]", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - stdlib", DependencyScope.PROVIDED)
|
||||
libraryDependency("Kotlin/Native ${gradleKotlinPluginVersion} - zlib [linux_x64]", DependencyScope.PROVIDED)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonTest", DependencyScope.TEST)
|
||||
moduleDependency("my-app.linuxAndJsMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.linuxAndJsTest", DependencyScope.TEST)
|
||||
moduleDependency("my-app.linuxX64Main", DependencyScope.TEST)
|
||||
sourceFolder("src/linuxX64Test/kotlin", TestSourceKotlinRootType)
|
||||
sourceFolder("src/linuxX64Test/resources", TestResourceKotlinRootType)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions()
|
||||
fun testJvmWithJavaOnHMPP() {
|
||||
@@ -599,7 +773,7 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions()
|
||||
@PluginTargetVersions(pluginVersion = "1.5.30+")
|
||||
fun testDependencyOnStdlibFromPlatformSourceSets() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -607,7 +781,6 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
checkProjectStructure(exhaustiveModuleList = false, exhaustiveSourceSourceRootList = false, exhaustiveDependencyList = true) {
|
||||
module("my-app.jvmMain") {
|
||||
moduleDependency("my-app.commonMain", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk8:${gradleKotlinPluginVersion}", DependencyScope.COMPILE)
|
||||
@@ -619,7 +792,6 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
moduleDependency("my-app.jvmMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.jvmMain", DependencyScope.TEST)
|
||||
moduleDependency("my-app.commonMain", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk8:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${gradleKotlinPluginVersion}", DependencyScope.TEST)
|
||||
|
||||
+22
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.gradle.plugin.sources.withAllDependsOnSourceSets
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.resolveAllDependsOnSourceSets
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.JvmCompilationsTestRunSource
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_MODULE_GROUP
|
||||
import org.jetbrains.kotlin.gradle.tasks.locateTask
|
||||
import org.jetbrains.kotlin.gradle.testing.KotlinTaskTestRun
|
||||
@@ -46,6 +47,7 @@ internal fun customizeKotlinDependencies(project: Project) {
|
||||
configureKotlinTestDependency(project)
|
||||
}
|
||||
configureDefaultVersionsResolutionStrategy(project)
|
||||
excludeStdlibCommonFromJvmCompilationsAndSourceSets(project)
|
||||
}
|
||||
|
||||
private fun configureDefaultVersionsResolutionStrategy(project: Project) {
|
||||
@@ -61,6 +63,26 @@ private fun configureDefaultVersionsResolutionStrategy(project: Project) {
|
||||
}
|
||||
|
||||
//region stdlib
|
||||
private fun excludeStdlibCommonFromJvmCompilationsAndSourceSets(project: Project) {
|
||||
val multiplatformExtension = project.multiplatformExtensionOrNull ?: return
|
||||
|
||||
multiplatformExtension.targets.withType(KotlinJvmTarget::class.java).all { jvmTarget ->
|
||||
val configurationsNamesToExcludeStdlibFrom: MutableList<String> = mutableListOf()
|
||||
jvmTarget.compilations.forEach {
|
||||
configurationsNamesToExcludeStdlibFrom += it.compileDependencyConfigurationName
|
||||
configurationsNamesToExcludeStdlibFrom += it.runtimeDependencyConfigurationName
|
||||
configurationsNamesToExcludeStdlibFrom += it.defaultSourceSet.apiMetadataConfigurationName
|
||||
configurationsNamesToExcludeStdlibFrom += it.defaultSourceSet.implementationMetadataConfigurationName
|
||||
}
|
||||
|
||||
configurationsNamesToExcludeStdlibFrom.forEach {
|
||||
project.configurations.getByName(it).exclude(
|
||||
mapOf("group" to "org.jetbrains.kotlin", "module" to "kotlin-stdlib-common")
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal fun configureStdlibDefaultDependency(project: Project) = with(project) {
|
||||
if (!PropertiesProvider(project).stdlibDefaultDependency)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user