Build: Remove artifact configuration out of lazy lambda

It may not be executed leading to misconfiguration
This commit is contained in:
Vyacheslav Gerasimov
2020-04-23 14:27:42 +03:00
parent b43ff7fbf9
commit 410c5f3e69
3 changed files with 27 additions and 13 deletions
+21 -3
View File
@@ -6,6 +6,7 @@ import org.gradle.api.Task
import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurablePublishArtifact
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.ConfigurationContainer
import org.gradle.api.artifacts.PublishArtifact
import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.gradle.api.artifacts.component.ProjectComponentIdentifier
import org.gradle.api.file.DuplicatesStrategy import org.gradle.api.file.DuplicatesStrategy
import org.gradle.api.plugins.BasePluginConvention import org.gradle.api.plugins.BasePluginConvention
@@ -58,11 +59,15 @@ fun Project.noDefaultJar() {
} }
} }
fun Project.runtimeJarArtifactBy(task: Task, artifactRef: Any, body: ConfigurablePublishArtifact.() -> Unit = {}) { fun <T : Task> Project.runtimeJarArtifactBy(
task: TaskProvider<T>,
artifactRef: Any,
body: ConfigurablePublishArtifact.() -> Unit = {}
) {
addArtifact("archives", task, artifactRef, body) addArtifact("archives", task, artifactRef, body)
addArtifact("runtimeJar", task, artifactRef, body) addArtifact("runtimeJar", task, artifactRef, body)
configurations.findByName("runtime")?.let { configurations.findByName("runtime")?.let {
addArtifact(it, task, artifactRef, body) addArtifact(it.name, task, artifactRef, body)
} }
} }
@@ -82,8 +87,8 @@ fun <T : Jar> Project.runtimeJar(task: TaskProvider<T>, body: T.() -> Unit = {})
setupPublicJar(project.the<BasePluginConvention>().archivesBaseName) setupPublicJar(project.the<BasePluginConvention>().archivesBaseName)
setDuplicatesStrategy(DuplicatesStrategy.EXCLUDE) setDuplicatesStrategy(DuplicatesStrategy.EXCLUDE)
body() body()
project.runtimeJarArtifactBy(this, this)
} }
project.runtimeJarArtifactBy(task, task)
return task return task
} }
@@ -261,6 +266,19 @@ fun <T : Task> Project.addArtifact(configurationName: String, task: TaskProvider
artifacts.add(configurationName, task, body) artifacts.add(configurationName, task, body)
} }
fun <T : Task> Project.addArtifact(
configurationName: String,
task: TaskProvider<T>,
artifactRef: Any,
body: ConfigurablePublishArtifact.() -> Unit = {}
): PublishArtifact {
configurations.maybeCreate(configurationName)
return artifacts.add(configurationName, artifactRef) {
builtBy(task)
body()
}
}
fun Project.cleanArtifacts() { fun Project.cleanArtifacts() {
configurations["archives"].artifacts.let { artifacts -> configurations["archives"].artifacts.let { artifacts ->
artifacts.forEach { artifacts.forEach {
@@ -54,7 +54,7 @@ if (deployVersion != null) {
noDefaultJar() noDefaultJar()
tasks.register<ShadowJar>("shadowJar") { val shadowJar = tasks.register<ShadowJar>("shadowJar") {
callGroovy("manifestAttributes", manifest, project) callGroovy("manifestAttributes", manifest, project)
manifest.attributes["Implementation-Version"] = version manifest.attributes["Implementation-Version"] = version
@@ -62,12 +62,10 @@ tasks.register<ShadowJar>("shadowJar") {
exclude("**/*.proto") exclude("**/*.proto")
configurations = listOf(shadows) configurations = listOf(shadows)
relocate("org.jetbrains.kotlin", "kotlinx.metadata.internal") 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 val test by tasks
test.dependsOn("shadowJar") test.dependsOn("shadowJar")
@@ -44,7 +44,7 @@ if (deployVersion != null) {
noDefaultJar() noDefaultJar()
tasks.register<ShadowJar>("shadowJar") { val shadowJar = tasks.register<ShadowJar>("shadowJar") {
callGroovy("manifestAttributes", manifest, project) callGroovy("manifestAttributes", manifest, project)
manifest.attributes["Implementation-Version"] = version manifest.attributes["Implementation-Version"] = version
@@ -52,12 +52,10 @@ tasks.register<ShadowJar>("shadowJar") {
exclude("**/*.proto") exclude("**/*.proto")
configurations = listOf(shadows) configurations = listOf(shadows)
relocate("org.jetbrains.kotlin", "kotlinx.metadata.internal") relocate("org.jetbrains.kotlin", "kotlinx.metadata.internal")
val artifactRef = outputs.files.singleFile
runtimeJarArtifactBy(this, artifactRef)
addArtifact("runtime", this, artifactRef)
} }
runtimeJarArtifactBy(shadowJar, shadowJar)
sourcesJar { sourcesJar {
for (dependency in shadows.dependencies) { for (dependency in shadows.dependencies) {
if (dependency is ProjectDependency) { if (dependency is ProjectDependency) {