From: Ben Soares Date: Fri, 19 Jan 2024 16:11:14 +0000 (+0000) Subject: JAL-4373 Fix Main-Class and other attribute settings in the shadowJar manifest. It... X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=commitdiff_plain;h=d6a4f39f26548ff14e96609b40e5ac4d35fc8448 JAL-4373 Fix Main-Class and other attribute settings in the shadowJar manifest. It requires a 'dummy' Jar task with the correct settings. --- diff --git a/build.gradle b/build.gradle index 3b81404..3ed6c56 100644 --- a/build.gradle +++ b/build.gradle @@ -2150,6 +2150,16 @@ task cleanDist { } +task launcherJar(type: Jar) { + manifest { + attributes ( + "Main-Class": shadow_jar_main_class, + "Implementation-Version": JALVIEW_VERSION, + "Application-Name": applicationName + ) + } +} + shadowJar { group = "distribution" description = "Create a single jar file with all dependency libraries merged. Can be run with java -jar" @@ -2163,6 +2173,10 @@ shadowJar { from groovyJars from otherJars + manifest { + // shadowJar manifest must inheritFrom another Jar task. Can't set attributes here. + inheritFrom(project.tasks.launcherJar.manifest) + } // we need to include the groovy-swing Include-Package for it to run in the shadowJar doFirst { def jarFileManifests = [] @@ -2172,9 +2186,7 @@ shadowJar { jarFileManifests += mf } } - manifest { - attributes "Implementation-Version": JALVIEW_VERSION, "Application-Name": applicationName from (jarFileManifests) { eachEntry { details -> if (!details.key.equals("Import-Package")) { @@ -2187,6 +2199,7 @@ shadowJar { duplicatesStrategy "INCLUDE" + // this mainClassName is mandatory but gets ignored due to manifest created in doFirst{}. Set the Main-Class as an attribute in launcherJar instead mainClassName = shadow_jar_main_class mergeServiceFiles() classifier = "all-"+JALVIEW_VERSION+"-j"+JAVA_VERSION