Skip to content

Commit

Permalink
Deduplicate output jar files (#118)
Browse files Browse the repository at this point in the history
  • Loading branch information
turikhay authored Mar 23, 2024
1 parent ead75ea commit b0a67e8
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 11 deletions.
9 changes: 9 additions & 0 deletions buildSrc/src/main/kotlin/ProjectExt.kt
Original file line number Diff line number Diff line change
@@ -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<org.gradle.accessors.dm.LibrariesForLibs>()

val Task.singleFile get() = outputs.files.singleFile

val <T : Task> TaskProvider<T>.singleFile get() = map { it.singleFile }
19 changes: 14 additions & 5 deletions buildSrc/src/main/kotlin/java-shadow.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,30 @@ plugins {
}

tasks {
assemble {
dependsOn(shadowJar)
}

shadowJar {
archiveFileName = "MapModCompanion-${
project.name.replaceFirstChar {
it.uppercaseChar()
}
}.jar"
}-shadow.jar"

listOf(
"org.bstats",
).forEach { pkg ->
relocate(pkg, with(rootProject) { "${group}.${name}.shade.${pkg}" })
}
}

val dedupShadowJar = register<Jar>("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)
}
}
11 changes: 6 additions & 5 deletions packages/single/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -42,7 +43,7 @@ modrinth {
if (updatePages) {
syncBodyFrom = platformReadme
}
uploadFile = tasks.getByPath("shadowJar")
file = dedupShadowJar.singleFile
gameVersions = allVersions
loaders.addAll(listOf(
"bukkit",
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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")
)
}
Expand Down
2 changes: 1 addition & 1 deletion velocity/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,6 @@ tasks {
}

shadowJar {
archiveFileName = "mapmodcompanion.jar"
archiveFileName = "mapmodcompanion-shadow.jar"
}
}

0 comments on commit b0a67e8

Please sign in to comment.