From d3a8270d8a302e21369aca78a30cc6c31e76c1ef Mon Sep 17 00:00:00 2001 From: Leo Galambos Date: Sun, 8 Mar 2026 13:52:45 +0100 Subject: [PATCH] fix: package application as fat JAR and fix distribution contents --- build.gradle | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 651d764..338cb84 100644 --- a/build.gradle +++ b/build.gradle @@ -60,17 +60,21 @@ javadoc { source = sourceSets.main.allJava } -jar { +tasks.named('jar') { + enabled = false +} + +tasks.register('fatJar', Jar) { + archiveClassifier = '' manifest { attributes( - 'Main-Class': application.mainClass, + 'Main-Class': application.mainClass.get(), 'Implementation-Title': rootProject.name, - 'Implementation-Version': "${version}" + 'Implementation-Version': "${version}" ) } - - from sourceSets.main.output + from sourceSets.main.output dependsOn configurations.runtimeClasspath // Include each JAR dependency @@ -95,6 +99,33 @@ jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } +distributions { + create('fat') { + distributionBaseName = project.name + contents { + into('bin') { + from(tasks.named('startScripts')) + filePermissions { + unix('rwxr-xr-x') + } + } + into('lib') { + from(tasks.named('fatJar')) + } + from('src/dist') + } + } +} + +tasks.named('assemble') { + dependsOn tasks.named('fatDistZip'), tasks.named('fatDistTar') +} + +tasks.named('startScripts') { + dependsOn tasks.named('fatJar') + classpath = files(tasks.named('fatJar').flatMap { it.archiveFile }) +} + gradle.taskGraph.whenReady { taskGraph -> def banner = """ \u001B[34m