Skip to content

Commit

Permalink
Use diktat-runner:shadow as variant (#1875)
Browse files Browse the repository at this point in the history
- shadow jar as variant is due to Gradle multiply artifacts issue
  • Loading branch information
nulls committed Dec 18, 2023
1 parent e51bcf6 commit 1b4b6c7
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions diktat-runner/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import com.saveourtool.diktat.buildutils.configurePublications
import com.saveourtool.diktat.buildutils.configurePublishing
import com.github.jengelman.gradle.plugins.shadow.ShadowExtension
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

@Suppress("DSL_SCOPE_VIOLATION", "RUN_IN_SCRIPT") // https://github.com/gradle/gradle/issues/22797
plugins {
Expand All @@ -19,23 +17,31 @@ dependencies {
implementation(projects.diktatRules)
}

tasks.named<ShadowJar>("shadowJar") {
tasks.shadowJar {
archiveClassifier.set("shadow")
duplicatesStrategy = DuplicatesStrategy.FAIL
}

// https://github.com/gradle/gradle/issues/10384#issuecomment-1279708395
val shadowElement: Configuration by configurations.creating {
isCanBeConsumed = true
isCanBeResolved = false
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY))
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.SHADOWED))
}
outgoing.artifact(tasks.shadowJar)
}
components.named<AdhocComponentWithVariants>("java").configure {
addVariantsFromConfiguration(shadowElement) {}
}

publishing {
publications {
create<MavenPublication>("maven") {
from(components["java"])
}
// it creates a publication for shadowJar
create<MavenPublication>("shadow") {
// https://github.com/johnrengelman/shadow/issues/417#issuecomment-830668442
project.extensions.configure<ShadowExtension> {
component(this@create)
}
}
}
}
configurePublications()
Expand Down

0 comments on commit 1b4b6c7

Please sign in to comment.