From 410c5f3e69201ee91caf147ef370589b5e5639d7 Mon Sep 17 00:00:00 2001 From: Vyacheslav Gerasimov Date: Thu, 23 Apr 2020 14:27:42 +0300 Subject: [PATCH] Build: Remove artifact configuration out of lazy lambda It may not be executed leading to misconfiguration --- buildSrc/src/main/kotlin/artifacts.kt | 24 ++++++++++++++++--- .../kotlinx-metadata/jvm/build.gradle.kts | 8 +++---- .../kotlinx-metadata/klib/build.gradle.kts | 8 +++---- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/buildSrc/src/main/kotlin/artifacts.kt b/buildSrc/src/main/kotlin/artifacts.kt index dcca7c4f0ea..7b825726b01 100644 --- a/buildSrc/src/main/kotlin/artifacts.kt +++ b/buildSrc/src/main/kotlin/artifacts.kt @@ -6,6 +6,7 @@ import org.gradle.api.Task import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurationContainer +import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.gradle.api.file.DuplicatesStrategy import org.gradle.api.plugins.BasePluginConvention @@ -58,11 +59,15 @@ fun Project.noDefaultJar() { } } -fun Project.runtimeJarArtifactBy(task: Task, artifactRef: Any, body: ConfigurablePublishArtifact.() -> Unit = {}) { +fun Project.runtimeJarArtifactBy( + task: TaskProvider, + artifactRef: Any, + body: ConfigurablePublishArtifact.() -> Unit = {} +) { addArtifact("archives", task, artifactRef, body) addArtifact("runtimeJar", task, artifactRef, body) configurations.findByName("runtime")?.let { - addArtifact(it, task, artifactRef, body) + addArtifact(it.name, task, artifactRef, body) } } @@ -82,8 +87,8 @@ fun Project.runtimeJar(task: TaskProvider, body: T.() -> Unit = {}) setupPublicJar(project.the().archivesBaseName) setDuplicatesStrategy(DuplicatesStrategy.EXCLUDE) body() - project.runtimeJarArtifactBy(this, this) } + project.runtimeJarArtifactBy(task, task) return task } @@ -261,6 +266,19 @@ fun Project.addArtifact(configurationName: String, task: TaskProvider artifacts.add(configurationName, task, body) } +fun Project.addArtifact( + configurationName: String, + task: TaskProvider, + artifactRef: Any, + body: ConfigurablePublishArtifact.() -> Unit = {} +): PublishArtifact { + configurations.maybeCreate(configurationName) + return artifacts.add(configurationName, artifactRef) { + builtBy(task) + body() + } +} + fun Project.cleanArtifacts() { configurations["archives"].artifacts.let { artifacts -> artifacts.forEach { diff --git a/libraries/kotlinx-metadata/jvm/build.gradle.kts b/libraries/kotlinx-metadata/jvm/build.gradle.kts index 0fbccbe0de5..87e72e3798c 100644 --- a/libraries/kotlinx-metadata/jvm/build.gradle.kts +++ b/libraries/kotlinx-metadata/jvm/build.gradle.kts @@ -54,7 +54,7 @@ if (deployVersion != null) { noDefaultJar() -tasks.register("shadowJar") { +val shadowJar = tasks.register("shadowJar") { callGroovy("manifestAttributes", manifest, project) manifest.attributes["Implementation-Version"] = version @@ -62,12 +62,10 @@ tasks.register("shadowJar") { exclude("**/*.proto") configurations = listOf(shadows) relocate("org.jetbrains.kotlin", "kotlinx.metadata.internal") - - val artifactRef = outputs.files.singleFile - runtimeJarArtifactBy(this, artifactRef) - addArtifact("runtime", this, artifactRef) } +runtimeJarArtifactBy(shadowJar, shadowJar) + val test by tasks test.dependsOn("shadowJar") diff --git a/libraries/kotlinx-metadata/klib/build.gradle.kts b/libraries/kotlinx-metadata/klib/build.gradle.kts index 57401630a2d..b6717081035 100644 --- a/libraries/kotlinx-metadata/klib/build.gradle.kts +++ b/libraries/kotlinx-metadata/klib/build.gradle.kts @@ -44,7 +44,7 @@ if (deployVersion != null) { noDefaultJar() -tasks.register("shadowJar") { +val shadowJar = tasks.register("shadowJar") { callGroovy("manifestAttributes", manifest, project) manifest.attributes["Implementation-Version"] = version @@ -52,12 +52,10 @@ tasks.register("shadowJar") { exclude("**/*.proto") configurations = listOf(shadows) relocate("org.jetbrains.kotlin", "kotlinx.metadata.internal") - - val artifactRef = outputs.files.singleFile - runtimeJarArtifactBy(this, artifactRef) - addArtifact("runtime", this, artifactRef) } +runtimeJarArtifactBy(shadowJar, shadowJar) + sourcesJar { for (dependency in shadows.dependencies) { if (dependency is ProjectDependency) {