From b0a67e8f2d2c03715bd6224f7fbb6cd710ae9ad4 Mon Sep 17 00:00:00 2001 From: Artur Khusainov Date: Sat, 23 Mar 2024 11:52:22 +0300 Subject: [PATCH] Deduplicate output jar files (#118) --- buildSrc/src/main/kotlin/ProjectExt.kt | 9 +++++++++ .../src/main/kotlin/java-shadow.gradle.kts | 19 ++++++++++++++----- packages/single/build.gradle.kts | 11 ++++++----- velocity/build.gradle.kts | 2 +- 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/buildSrc/src/main/kotlin/ProjectExt.kt b/buildSrc/src/main/kotlin/ProjectExt.kt index 8cbe89a..7381031 100644 --- a/buildSrc/src/main/kotlin/ProjectExt.kt +++ b/buildSrc/src/main/kotlin/ProjectExt.kt @@ -1,5 +1,14 @@ import org.gradle.api.Project +import org.gradle.api.Task +import org.gradle.api.provider.Provider +import org.gradle.api.tasks.TaskOutputs +import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.the +import java.io.File // See https://github.com/gradle/gradle/issues/15383 val Project.libs get() = the() + +val Task.singleFile get() = outputs.files.singleFile + +val TaskProvider.singleFile get() = map { it.singleFile } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/java-shadow.gradle.kts b/buildSrc/src/main/kotlin/java-shadow.gradle.kts index 355ea78..16c31df 100644 --- a/buildSrc/src/main/kotlin/java-shadow.gradle.kts +++ b/buildSrc/src/main/kotlin/java-shadow.gradle.kts @@ -4,16 +4,12 @@ plugins { } tasks { - assemble { - dependsOn(shadowJar) - } - shadowJar { archiveFileName = "MapModCompanion-${ project.name.replaceFirstChar { it.uppercaseChar() } - }.jar" + }-shadow.jar" listOf( "org.bstats", @@ -21,4 +17,17 @@ tasks { relocate(pkg, with(rootProject) { "${group}.${name}.shade.${pkg}" }) } } + + val dedupShadowJar = register("dedupShadowJar") { + dependsOn(shadowJar) + from(shadowJar.map { zipTree(it.singleFile) }) + archiveFileName = shadowJar.map { + it.archiveFileName.get().replace("-shadow.jar", ".jar") + } + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + } + + assemble { + dependsOn(dedupShadowJar) + } } diff --git a/packages/single/build.gradle.kts b/packages/single/build.gradle.kts index 728b8fa..b231a79 100644 --- a/packages/single/build.gradle.kts +++ b/packages/single/build.gradle.kts @@ -12,6 +12,7 @@ dependencies { implementation(project(":velocity")) } +val dedupShadowJar by tasks.named("dedupShadowJar") val semVer = SemVer.parse(project.version as String) val isRelease = semVer.preRelease == null val updatePages = isRelease || System.getenv("UPDATE_PAGES") == "true" @@ -42,7 +43,7 @@ modrinth { if (updatePages) { syncBodyFrom = platformReadme } - uploadFile = tasks.getByPath("shadowJar") + file = dedupShadowJar.singleFile gameVersions = allVersions loaders.addAll(listOf( "bukkit", @@ -70,7 +71,7 @@ hangarPublish { changelog = commonChangelog apiKey = System.getenv("HANGAR_TOKEN") platforms { - val singleJar = tasks.shadowJar.map { it.outputs.files.singleFile } + val singleJar = dedupShadowJar.singleFile val families = allVersions.map { val split = it.split(".") // -> 1, 20[, 4] assert(split.size > 1) @@ -110,17 +111,17 @@ hangarPublish { tasks { shadowJar { - archiveFileName = "MapModCompanion.jar" + archiveFileName = "MapModCompanion-shadow.jar" } getByName("modrinth") { dependsOn( - shadowJar, + dedupShadowJar, modrinthSyncBody ) } getByName("publishPluginPublicationToHangar") { dependsOn( - shadowJar, + dedupShadowJar, getByName("syncAllPluginPublicationPagesToHangar") ) } diff --git a/velocity/build.gradle.kts b/velocity/build.gradle.kts index 063fda5..004ff34 100644 --- a/velocity/build.gradle.kts +++ b/velocity/build.gradle.kts @@ -34,6 +34,6 @@ tasks { } shadowJar { - archiveFileName = "mapmodcompanion.jar" + archiveFileName = "mapmodcompanion-shadow.jar" } }