JAL-4409 Allow more URI schemes (e.g. file) to filter through to Jalview
[jalview.git] / build.gradle
index 011be67..012d61e 100644 (file)
@@ -238,7 +238,7 @@ ext {
   install4jDMGBackgroundImageFile = "${install4j_dmg_background}"
   install4jInstallerName = "${jalview_name} Non-Release Installer"
   install4jExecutableName = install4j_executable_name
-  install4jExtraScheme = "jalviewx"
+  install4jExtraScheme = "jalviewextra"
   install4jMacIconsFile = string("${install4j_images_dir}/${install4j_mac_icons_file}")
   install4jWindowsIconsFile = string("${install4j_images_dir}/${install4j_windows_icons_file}")
   install4jPngIconFile = string("${install4j_images_dir}/${install4j_png_icon_file}")
@@ -269,6 +269,7 @@ ext {
     reportRsyncCommand = true
     install4jSuffix = ""
     install4jInstallerName = "${jalview_name} Installer"
+    install4jExtraScheme = (CHANNEL=="RELEASE")?"jalviewx":"jalviewjs"
     break
 
     case "ARCHIVE":
@@ -1769,6 +1770,7 @@ task testTask0(type: Test) {
     preserveOrder true
     useDefaultListeners=true
   }
+  timeout = Duration.ofMinutes(15)
 }
 
 /* separated tests */
@@ -1781,6 +1783,7 @@ task testTask1(type: Test) {
     preserveOrder true
     useDefaultListeners=true
   }
+  timeout = Duration.ofMinutes(5)
 }
 
 task testTask2(type: Test) {
@@ -1792,6 +1795,7 @@ task testTask2(type: Test) {
     preserveOrder true
     useDefaultListeners=true
   }
+  timeout = Duration.ofMinutes(5)
 }
 task testTask3(type: Test) {
   group = "Verification"
@@ -1802,6 +1806,7 @@ task testTask3(type: Test) {
     preserveOrder true
     useDefaultListeners=true
   }
+  timeout = Duration.ofMinutes(5)
 }
 
 /* insert more testTaskNs here -- change N to next digit or other string */
@@ -1818,6 +1823,7 @@ task testTaskN(type: Test) {
 }
 */
 
+
 /*
  * adapted from https://medium.com/@wasyl/pretty-tests-summary-in-gradle-744804dd676c
  * to summarise test results from all Test tasks
@@ -2150,6 +2156,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 +2179,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 +2192,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 +2205,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
@@ -2240,9 +2259,9 @@ task getdownImages() {
   dependsOn getdownImagesProcess
 }
 
-task getdownWebsite() {
+task getdownWebsiteBuild() {
   group = "distribution"
-  description = "Create the getdown minimal app folder, and website folder for this version of jalview. Website folder also used for offline app installer"
+  description = "Create the getdown minimal app folder, and website folder for this version of jalview. Website folder also used for offline app installer. No digest is created."
 
   dependsOn getdownImages
   if (buildDist) {
@@ -2354,7 +2373,7 @@ task getdownWebsite() {
           from s
           into "${getdownAppBaseDir}/${getdown_wrapper_script_dir}"
         }
-        getdownTextLines += "resource = ${getdown_wrapper_script_dir}/${script}"
+        getdownTextLines += "xresource = ${getdown_wrapper_script_dir}/${script}"
       }
     }
 
@@ -2496,7 +2515,9 @@ task getdownDigestDir(type: JavaExec) {
 task getdownDigest(type: JavaExec) {
   group = "distribution"
   description = "Digest the getdown website folder"
-  dependsOn getdownWebsite
+
+  dependsOn getdownWebsiteBuild
+
   doFirst {
     classpath = files(getdownLauncher)
   }
@@ -2529,12 +2550,19 @@ task getdown() {
   }
 }
 
+task getdownWebsite {
+  group = "distribution"
+  description = "A task to create the whole getdown channel website dir including digest file"
+
+  dependsOn getdownWebsiteBuild
+  dependsOn getdownDigest
+}
 
 task getdownArchiveBuild() {
   group = "distribution"
   description = "Put files in the archive dir to go on the website"
 
-  dependsOn getdownWebsite
+  dependsOn getdownWebsiteBuild
 
   def v = "v${JALVIEW_VERSION_UNDERSCORES}"
   def vDir = "${getdownArchiveDir}/${v}"
@@ -2581,6 +2609,14 @@ task getdownArchiveBuild() {
       }
     }
 
+    // the wrapper scripts dir
+    if ( file("${getdownAppBaseDir}/${getdown_wrapper_script_dir}").exists() ) {
+      copy {
+        from "${getdownAppBaseDir}/${getdown_wrapper_script_dir}"
+        into "${getdownFullArchiveDir}/${getdown_wrapper_script_dir}"
+      }
+    }
+
     getdownArchiveTxt.write(getdownArchiveTextLines.join("\n"))
 
     def vLaunchJvl = file(getdownVersionLaunchJvl)
@@ -2807,6 +2843,9 @@ task installerFiles(type: com.install4j.gradle.Install4jTask) {
 
   projectFile = install4jConfFile
 
+  // run install4j with 4g
+  vmParameters = ["-Xmx4294967296"]
+
   // create an md5 for the input files to use as version for install4j conf file
   def digest = MessageDigest.getInstance("MD5")
   digest.update(