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.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 <T : Task> Project.runtimeJarArtifactBy(
task: TaskProvider<T>,
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 <T : Jar> Project.runtimeJar(task: TaskProvider<T>, body: T.() -> Unit = {})
setupPublicJar(project.the<BasePluginConvention>().archivesBaseName)
setDuplicatesStrategy(DuplicatesStrategy.EXCLUDE)
body()
project.runtimeJarArtifactBy(this, this)
}
project.runtimeJarArtifactBy(task, task)
return task
}
@@ -261,6 +266,19 @@ fun <T : Task> Project.addArtifact(configurationName: String, task: TaskProvider
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() {
configurations["archives"].artifacts.let { artifacts ->
artifacts.forEach {
@@ -54,7 +54,7 @@ if (deployVersion != null) {
noDefaultJar()
tasks.register<ShadowJar>("shadowJar") {
val shadowJar = tasks.register<ShadowJar>("shadowJar") {
callGroovy("manifestAttributes", manifest, project)
manifest.attributes["Implementation-Version"] = version
@@ -62,12 +62,10 @@ tasks.register<ShadowJar>("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")
@@ -44,7 +44,7 @@ if (deployVersion != null) {
noDefaultJar()
tasks.register<ShadowJar>("shadowJar") {
val shadowJar = tasks.register<ShadowJar>("shadowJar") {
callGroovy("manifestAttributes", manifest, project)
manifest.attributes["Implementation-Version"] = version
@@ -52,12 +52,10 @@ tasks.register<ShadowJar>("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) {