From f4b17ff78f263354df98784f87e4db55eb3b0b80 Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Mon, 21 Feb 2022 16:29:06 +0300 Subject: [PATCH] [Build] kotlin-test: cross-project task dependencies -> artifacts sharing for `combinedSourcesJar` It's recommended way to work with such setups, and the former way itn't work properly with Gradle configuration cache #KT-44611 In Progress --- libraries/kotlin.test/build.gradle.kts | 31 +++++++++++++++++++++----- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/libraries/kotlin.test/build.gradle.kts b/libraries/kotlin.test/build.gradle.kts index 6e269cde131..c1803de9396 100644 --- a/libraries/kotlin.test/build.gradle.kts +++ b/libraries/kotlin.test/build.gradle.kts @@ -1,3 +1,4 @@ +import org.gradle.kotlin.dsl.support.serviceOf import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import plugins.configureDefaultPublishing import plugins.configureKotlinPomAttributes @@ -91,12 +92,31 @@ val commonVariant by configurations.creating { } } +fun Configuration.sourcesConsumingConfiguration() { + isCanBeConsumed = false + isCanBeResolved = true + attributes { + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) + attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType.SOURCES)) + } +} + +val kotlinTestCommonSources by configurations.creating { + sourcesConsumingConfiguration() +} + +val kotlinTestJvmSources by configurations.creating { + sourcesConsumingConfiguration() +} + dependencies { jvmApi(project(":kotlin-stdlib")) jsApiVariant("$group:kotlin-test-js:$version") wasmApiVariant("$group:kotlin-test-wasm:$version") commonVariant("$group:kotlin-test-common:$version") commonVariant("$group:kotlin-test-annotations-common:$version") + kotlinTestCommonSources(project(":kotlin-test:kotlin-test-common")) + kotlinTestJvmSources(project(":kotlin-test:kotlin-test-jvm")) } artifacts { @@ -105,19 +125,18 @@ artifacts { add(jvmRuntime.name, jvmJar) } -val kotlinTestCommonSourcesJar = tasks.getByPath(":kotlin-test:kotlin-test-common:sourcesJar") as Jar -val kotlinTestJvmSourcesJar = tasks.getByPath(":kotlin-test:kotlin-test-jvm:sourcesJar") as Jar - val combinedSourcesJar by tasks.registering(Jar::class) { - dependsOn(kotlinTestCommonSourcesJar, kotlinTestJvmSourcesJar) + dependsOn(kotlinTestCommonSources) + dependsOn(kotlinTestJvmSources) archiveClassifier.set("sources") + val archiveOperations = serviceOf() into("common") { - from(zipTree(kotlinTestCommonSourcesJar.archiveFile)) { + from({ archiveOperations.zipTree(kotlinTestCommonSources.singleFile) }) { exclude("META-INF/**") } } into("jvm") { - from(zipTree(kotlinTestJvmSourcesJar.archiveFile)) { + from({ archiveOperations.zipTree(kotlinTestJvmSources.singleFile) }) { exclude("META-INF/**") } }