JAL-3210 Better use of ext properties, no more globals, auto detect Eclipse IDE
authorBen Soares <bsoares@dundee.ac.uk>
Mon, 11 Nov 2019 16:43:50 +0000 (16:43 +0000)
committerBen Soares <bsoares@dundee.ac.uk>
Mon, 11 Nov 2019 16:43:50 +0000 (16:43 +0000)
build.gradle
gradle.properties

index d32a6b2..ed026ef 100644 (file)
@@ -17,6 +17,7 @@ plugins {
   id 'eclipse'
   id 'com.github.johnrengelman.shadow' version '4.0.3'
   id 'com.install4j.gradle' version '7.0.9'
+  id 'com.dorongold.task-tree' version '1.4' // only needed to display task dependency tree with  gradle task1 [task2 ...] taskTree
 }
 
 repositories {
@@ -32,27 +33,16 @@ dependencies {
   compile 'org.apache.commons:commons-compress:1.18'
 }
 
-mainClassName = launcherClass
-def cloverInstrDir = file("${buildDir}/${cloverSourcesInstrDir}")
-def classes = "${jalviewDir}/${classesDir}"
 
-if (clover.equals("true")) {
-  use_clover = true
-  classes = "${buildDir}/${cloverClassesDir}"
-} else {
-  use_clover = false
-  classes = "${jalviewDir}/${classesDir}"
+// in ext the values are cast to Object. Ensure string values are cast as String (and not GStringImpl) for later use
+def string(Object o) {
+  return o.toString()
 }
 
-// configure classpath/args for j8/j11 compilation
-
-def jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath()
-def libDir
-def libDistDir
-def compile_source_compatibility
-def compile_target_compatibility
 
 ext {
+  jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath()
+
   // local build environment properties
   def localProps = "${jalviewDirAbsolutePath}/local.properties"
   if (file(localProps).exists()) {
@@ -74,97 +64,126 @@ ext {
     }
   }
 
-  getdownWebsiteDir = "${jalviewDir}/${getdown_website_dir}/${JAVA_VERSION}"
-  getdownDir = ""
+
+  // this property set when running Eclipse headlessly
+  j2sHeadlessBuildProperty = string("net.sf.j2s.core.headlessbuild")
+  // this property set by Eclipse
+  eclipseApplicationProperty = string("eclipse.application")
+  // CHECK IF IN ECLIPSE
+  IN_ECLIPSE = System.properties[eclipseApplicationProperty].startsWith("org.eclipse.ui.")
+  if (System.properties[j2sHeadlessBuildProperty].equals("true")) { // headless build property has been set
+    println("Setting IN_ECLIPSE to ${IN_ECLIPSE} as System.properties['${j2sHeadlessBuildProperty}'] == '${System.properties[j2sHeadlessBuildProperty]}'")
+    IN_ECLIPSE = false
+  }
+  /*
+  System.properties.sort { it.key }.each {
+    key, val -> println("SYSTEM PROPERTY ${key}='${val}'")
+  }
+  */
+
+  mainClassName = string(launcherClass)
+
+  cloverInstrDir = file("${buildDir}/${cloverSourcesInstrDir}")
+  classes = string("${jalviewDir}/${classesDir}")
+  if (clover.equals("true")) {
+    use_clover = true
+    classes = string("${buildDir}/${cloverClassesDir}")
+  } else {
+    use_clover = false
+    classes = string("${jalviewDir}/${classesDir}")
+  }
+
+  getdownWebsiteDir = string("${jalviewDir}/${getdown_website_dir}/${JAVA_VERSION}")
+  getdownDir = string("")
   reportRsyncCmd = false
   buildDist = true
   buildProperties = build_properties_file
-  getdownLauncher = "${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}"
+  getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}")
   switch (CHANNEL) {
 
     case "BUILD":
     // TODO: get bamboo build artifact URL for getdown artifacts
     getdown_channel_base = bamboo_channelbase
-    getdown_channel_name = "${bamboo_planKey}/${JAVA_VERSION}"
-    getdown_app_base = "${bamboo_channelbase}/${bamboo_planKey}${bamboo_getdown_channel_suffix}/${JAVA_VERSION}"
+    getdown_channel_name = string("${bamboo_planKey}/${JAVA_VERSION}")
+    getdown_app_base = string("${bamboo_channelbase}/${bamboo_planKey}${bamboo_getdown_channel_suffix}/${JAVA_VERSION}")
     getdown_app_dir = getdown_app_dir_alt
-    buildProperties = "${jalviewDir}/${classesDir}/${build_properties_file}"
+    buildProperties = string("${jalviewDir}/${classesDir}/${build_properties_file}")
     break
 
     case "RELEASE":
     getdown_channel_name = CHANNEL.toLowerCase()
-    getdownDir = "${getdown_channel_name}/${JAVA_VERSION}"
-    getdown_app_base = "${getdown_channel_base}/${getdownDir}"
+    getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
+    getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
     getdown_app_dir = getdown_app_dir_release
-    buildProperties = "${jalviewDir}/${classesDir}/${build_properties_file}"
+    buildProperties = string("${jalviewDir}/${classesDir}/${build_properties_file}")
     reportRsyncCommand = true
     break
 
     case "ARCHIVE":
     getdown_channel_name = CHANNEL.toLowerCase()+"/${JALVIEW_VERSION}"
-    getdownDir = "${getdown_channel_name}/${JAVA_VERSION}"
-    getdown_app_base = "${getdown_channel_base}/${getdownDir}"
+    getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
+    getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
     getdown_app_dir = getdown_app_dir_alt
     if (!file("${ARCHIVEDIR}/${packageDir}").exists()) {
       print "Must provide an ARCHIVEDIR value to produce an archive distribution"
       exit
     } else {
-      packageDir = "${ARCHIVEDIR}/${packageDir}"
-      buildProperties = "${ARCHIVEDIR}/${classesDir}/${build_properties_file}"
+      packageDir = string("${ARCHIVEDIR}/${packageDir}")
+      buildProperties = string("${ARCHIVEDIR}/${classesDir}/${build_properties_file}")
       buildDist = false
     }
     reportRsyncCommand = true
     break
 
     case "ARCHIVELOCAL":
-    getdown_channel_name = "archive/${JALVIEW_VERSION}"
-    getdownDir = "${getdown_channel_name}/${JAVA_VERSION}"
+    getdown_channel_name = string("archive/${JALVIEW_VERSION}")
+    getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
     getdown_app_base = file(getdownWebsiteDir).toURI().toString()
     getdown_app_dir = getdown_app_dir_alt
     if (!file("${ARCHIVEDIR}/${packageDir}").exists()) {
       print "Must provide an ARCHIVEDIR value to produce an archive distribution"
       exit
     } else {
-      packageDir = "${ARCHIVEDIR}/${packageDir}"
-      buildProperties = "${ARCHIVEDIR}/${classesDir}/${build_properties_file}"
+      packageDir = string("${ARCHIVEDIR}/${packageDir}")
+      buildProperties = string("${ARCHIVEDIR}/${classesDir}/${build_properties_file}")
       buildDist = false
     }
     reportRsyncCommand = true
-    getdownLauncher = "${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}"
+    getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
     break
 
     case "DEVELOP":
     getdown_channel_name = CHANNEL.toLowerCase()
-    getdownDir = "${getdown_channel_name}/${JAVA_VERSION}"
-    getdown_app_base = "${getdown_channel_base}/${getdownDir}"
+    getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
+    getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
     getdown_app_dir = getdown_app_dir_alt
-    buildProperties = "${jalviewDir}/${classesDir}/${build_properties_file}"
+    buildProperties = string("${jalviewDir}/${classesDir}/${build_properties_file}")
     reportRsyncCommand = true
     break
 
     case "TEST-RELEASE":
     getdown_channel_name = CHANNEL.toLowerCase()
-    getdownDir = "${getdown_channel_name}/${JAVA_VERSION}"
-    getdown_app_base = "${getdown_channel_base}/${getdownDir}"
+    getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
+    getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
     getdown_app_dir = getdown_app_dir_alt
-    buildProperties = "${jalviewDir}/${classesDir}/${build_properties_file}"
+    buildProperties = string("${jalviewDir}/${classesDir}/${build_properties_file}")
     reportRsyncCommand = true
     break
 
     case ~/^SCRATCH(|-[-\w]*)$/:
     getdown_channel_name = CHANNEL
-    getdownDir = "${getdown_channel_name}/${JAVA_VERSION}"
-    getdown_app_base = "${getdown_channel_base}/${getdownDir}"
+    getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
+    getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
     getdown_app_dir = getdown_app_dir_alt
-    buildProperties = "${jalviewDir}/${classesDir}/${build_properties_file}"
+    buildProperties = string("${jalviewDir}/${classesDir}/${build_properties_file}")
     reportRsyncCommand = true
     break
 
     case "LOCAL":
     getdown_app_base = file(getdownWebsiteDir).toURI().toString()
     getdown_app_dir = getdown_app_dir_alt
-    buildProperties = "${jalviewDir}/${classesDir}/${build_properties_file}"
-    getdownLauncher = "${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}"
+    buildProperties = string("${jalviewDir}/${classesDir}/${build_properties_file}")
+    getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
     break
 
     default: // something wrong specified
@@ -174,85 +193,111 @@ ext {
 
   }
 
-  getdownAppDir = "${getdownWebsiteDir}/${getdown_app_dir}"
+  getdownAppDir = string("${getdownWebsiteDir}/${getdown_app_dir}")
   //getdownJ11libDir = "${getdownWebsiteDir}/${getdown_j11lib_dir}"
-  getdownResourceDir = "${getdownWebsiteDir}/${getdown_resource_dir}"
-  getdownInstallDir = "${getdownWebsiteDir}/${getdown_install_dir}"
-  getdownFilesDir = "${jalviewDir}/${getdown_files_dir}/${JAVA_VERSION}/"
-  getdownFilesInstallDir = "${getdownFilesDir}/${getdown_install_dir}"
+  getdownResourceDir = string("${getdownWebsiteDir}/${getdown_resource_dir}")
+  getdownInstallDir = string("${getdownWebsiteDir}/${getdown_install_dir}")
+  getdownFilesDir = string("${jalviewDir}/${getdown_files_dir}/${JAVA_VERSION}/")
+  getdownFilesInstallDir = string("${getdownFilesDir}/${getdown_install_dir}")
   /* compile without modules -- using classpath libraries
   modules_compileClasspath = fileTree(dir: "${jalviewDir}/${j11modDir}", include: ["*.jar"])
   modules_runtimeClasspath = modules_compileClasspath
   */
-  gitHash = ""
-  gitBranch = ""
+  gitHash = string("")
+  gitBranch = string("")
 
   println("Using a ${CHANNEL} profile.")
-}
 
-def JAVA_INTEGER_VERSION
-def additional_compiler_args = []
-// these are getdown.txt properties defined dependent on the JAVA_VERSION
-def getdown_alt_java_min_version
-def getdown_alt_java_max_version
-// this property is assigned below and expanded to multiple lines in the getdown task
-def getdown_alt_multi_java_location
-// this property is for the Java library used in eclipse
-def eclipse_java_runtime_name
-if (JAVA_VERSION.equals("1.8")) {
-  JAVA_INTEGER_VERSION = "8"
-  //libDir = j8libDir
-  libDir = j11libDir
-  libDistDir = j8libDir
-  compile_source_compatibility = 1.8
-  compile_target_compatibility = 1.8
-  getdown_alt_java_min_version = getdown_alt_java8_min_version
-  getdown_alt_java_max_version = getdown_alt_java8_max_version
-  getdown_alt_multi_java_location = getdown_alt_java8_txt_multi_java_location
-  eclipse_java_runtime_name = "JavaSE-1.8"
-} else if (JAVA_VERSION.equals("11")) {
-  JAVA_INTEGER_VERSION = "11"
-  libDir = j11libDir
-  libDistDir = j11libDir
-  compile_source_compatibility = 11
-  compile_target_compatibility = 11
-  getdown_alt_java_min_version = getdown_alt_java11_min_version
-  getdown_alt_java_max_version = getdown_alt_java11_max_version
-  getdown_alt_multi_java_location = getdown_alt_java11_txt_multi_java_location
-  eclipse_java_runtime_name = "JavaSE-11"
-  /* compile without modules -- using classpath libraries
-  additional_compiler_args += [
-  '--module-path', ext.modules_compileClasspath.asPath,
-  '--add-modules', j11modules
-  ]
-  */
-} else if (JAVA_VERSION.equals("12") || JAVA_VERSION.equals("13")) {
-  JAVA_INTEGER_VERSION = JAVA_VERSION
-  libDir = j11libDir
-  libDistDir = j11libDir
-  compile_source_compatibility = JAVA_VERSION
-  compile_target_compatibility = JAVA_VERSION
-  getdown_alt_java_min_version = getdown_alt_java11_min_version
-  getdown_alt_java_max_version = getdown_alt_java11_max_version
-  getdown_alt_multi_java_location = getdown_alt_java11_txt_multi_java_location
-  eclipse_java_runtime_name = "JavaSE-11"
-  /* compile without modules -- using classpath libraries
-  additional_compiler_args += [
-  '--module-path', ext.modules_compileClasspath.asPath,
-  '--add-modules', j11modules
-  ]
-  */
-} else {
-  throw new GradleException("JAVA_VERSION=${JAVA_VERSION} not currently supported by Jalview")
+  additional_compiler_args = []
+  // configure classpath/args for j8/j11 compilation
+  if (JAVA_VERSION.equals("1.8")) {
+    JAVA_INTEGER_VERSION = string("8")
+    //libDir = j8libDir
+    libDir = j11libDir
+    libDistDir = j8libDir
+    compile_source_compatibility = 1.8
+    compile_target_compatibility = 1.8
+    // these are getdown.txt properties defined dependent on the JAVA_VERSION
+    getdown_alt_java_min_version = getdown_alt_java8_min_version
+    getdown_alt_java_max_version = getdown_alt_java8_max_version
+    // this property is assigned below and expanded to multiple lines in the getdown task
+    getdown_alt_multi_java_location = getdown_alt_java8_txt_multi_java_location
+    // this property is for the Java library used in eclipse
+    eclipse_java_runtime_name = string("JavaSE-1.8")
+  } else if (JAVA_VERSION.equals("11")) {
+    JAVA_INTEGER_VERSION = string("11")
+    libDir = j11libDir
+    libDistDir = j11libDir
+    compile_source_compatibility = 11
+    compile_target_compatibility = 11
+    getdown_alt_java_min_version = getdown_alt_java11_min_version
+    getdown_alt_java_max_version = getdown_alt_java11_max_version
+    getdown_alt_multi_java_location = getdown_alt_java11_txt_multi_java_location
+    eclipse_java_runtime_name = string("JavaSE-11")
+    /* compile without modules -- using classpath libraries
+    additional_compiler_args += [
+    '--module-path', modules_compileClasspath.asPath,
+    '--add-modules', j11modules
+    ]
+     */
+  } else if (JAVA_VERSION.equals("12") || JAVA_VERSION.equals("13")) {
+    JAVA_INTEGER_VERSION = JAVA_VERSION
+    libDir = j11libDir
+    libDistDir = j11libDir
+    compile_source_compatibility = JAVA_VERSION
+    compile_target_compatibility = JAVA_VERSION
+    getdown_alt_java_min_version = getdown_alt_java11_min_version
+    getdown_alt_java_max_version = getdown_alt_java11_max_version
+    getdown_alt_multi_java_location = getdown_alt_java11_txt_multi_java_location
+    eclipse_java_runtime_name = string("JavaSE-11")
+    /* compile without modules -- using classpath libraries
+    additional_compiler_args += [
+    '--module-path', modules_compileClasspath.asPath,
+    '--add-modules', j11modules
+    ]
+     */
+  } else {
+    throw new GradleException("JAVA_VERSION=${JAVA_VERSION} not currently supported by Jalview")
+  }
+
+
+  // for install4j
+  macosJavaVMDir = string("${System.env.HOME}/buildtools/jre/openjdk-java_vm/getdown/macos-jre${JAVA_VERSION}/jre")
+  macosJavaVMTgz = string("${System.env.HOME}/buildtools/jre/openjdk-java_vm/install4j/tgz/macos-jre${JAVA_VERSION}.tar.gz")
+  windowsJavaVMDir = string("${System.env.HOME}/buildtools/jre/openjdk-java_vm/getdown/windows-jre${JAVA_VERSION}/jre")
+  windowsJavaVMTgz = string("${System.env.HOME}/buildtools/jre/openjdk-java_vm/install4j/tgz/windows-jre${JAVA_VERSION}.tar.gz")
+  install4jDir = string("${jalviewDir}/${install4jResourceDir}")
+  install4jConfFileName = string("jalview-installers-java${JAVA_VERSION}.install4j")
+  install4jConfFile = string("${install4jDir}/${install4jConfFileName}")
+
+
+  buildingHTML = string("${jalviewDir}/${docDir}/building.html")
+  helpFile = string("${classes}/${helpDir}/help.jhm")
+
+
+  relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath())
+  jalviewjsBuildDir = string("${relativeBuildDir}/jalviewjs")
+  jalviewjsSiteDir = string("${jalviewjsBuildDir}/${jalviewjs_site_dir}")
+  jalviewjsTransferSiteJsDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_js")
+  jalviewjsTransferSiteLibDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_lib")
+  jalviewjsTransferSiteSwingJsDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_swingjs")
+  jalviewjsTransferSiteCoreDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_core")
+  jalviewjsJalviewCoreName = jalviewjs_core_name
+  jalviewjsJalviewTemplateName = string(jalviewjs_name)
+
+  eclipseWorkspace = null
+  eclipseBinary = string("")
+  eclipseVersion = string("")
+  eclipseDebug = false
+  // ENDEXT
 }
 
 
 sourceSets {
-
   main {
     java {
       srcDirs "${jalviewDir}/${sourceDir}"
-      outputDir = file("${classes}")
+      outputDir = file(project.classes)
     }
 
     resources {
@@ -326,7 +371,6 @@ configurations {
   cloverRuntime.extendsFrom cloverCompile
 }
 
-
 eclipse {
   project {
     name = eclipse_project_name
@@ -450,10 +494,9 @@ eclipse {
     }
 
   } // jdt
-  
+
   synchronizationTasks "eclipseSynchronizationTask"
   autoBuildTasks "eclipseAutoBuildTask"
-
 }
 
 
@@ -576,8 +619,8 @@ task setGitVals {
     ignoreExitValue true
   }
 
-  project.ext.gitHash = hashStdOut.toString().trim()
-  project.ext.gitBranch = branchStdOut.toString().trim()
+  gitHash = hashStdOut.toString().trim()
+  gitBranch = branchStdOut.toString().trim()
 
   outputs.upToDateWhen { false }
 }
@@ -594,12 +637,11 @@ task createBuildProperties(type: WriteProperties) {
   //comment "--Jalview Build Details--\n"+getDate("yyyy-MM-dd")
   property "BUILD_DATE", getDate("HH:mm:ss dd MMMM yyyy")
   property "VERSION", JALVIEW_VERSION
-  property "INSTALLATION", INSTALLATION+" git-commit:"+project.ext.gitHash+" ["+project.ext.gitBranch+"]"
+  property "INSTALLATION", INSTALLATION+" git-commit:"+gitHash+" ["+gitBranch+"]"
   outputs.file(outputFile)
 }
 
 
-def buildingHTML = "${jalviewDir}/${docDir}/building.html"
 task cleanBuildingHTML(type: Delete) {
   doFirst {
     delete buildingHTML
@@ -658,7 +700,6 @@ task syncDocs(type: Sync) {
 }
 
 
-def helpFile = "${classes}/${helpDir}/help.jhm"
 task copyHelp(type: Copy) {
   def inputDir = "${jalviewDir}/${helpParentDir}/${helpDir}"
   def outputDir = "${classes}/${helpDir}"
@@ -666,7 +707,14 @@ task copyHelp(type: Copy) {
     exclude '**/*.gif'
     exclude '**/*.jpg'
     exclude '**/*.png'
-    filter(ReplaceTokens, beginToken: '$$', endToken: '$$', tokens: ['Version-Rel': JALVIEW_VERSION,'Year-Rel': getDate("yyyy")])
+    filter(ReplaceTokens,
+      beginToken: '$$',
+      endToken: '$$',
+      tokens: [
+        'Version-Rel': JALVIEW_VERSION,
+        'Year-Rel': getDate("yyyy")
+      ]
+    )
   }
   from(inputDir) {
     include '**/*.gif'
@@ -888,19 +936,19 @@ task getdownWebsite() {
 
   def getdownWebsiteResourceFilenames = []
   def getdownTextString = ""
-  def getdownResourceDir = project.ext.getdownResourceDir
-  def getdownAppDir = project.ext.getdownAppDir
+  def getdownResourceDir = getdownResourceDir
+  def getdownAppDir = getdownAppDir
   def getdownResourceFilenames = []
 
   doFirst {
     // clean the getdown website and files dir before creating getdown folders
-    delete project.ext.getdownWebsiteDir
-    delete project.ext.getdownFilesDir
+    delete getdownWebsiteDir
+    delete getdownFilesDir
 
     copy {
       from buildProperties
       rename(build_properties_file, getdown_build_properties)
-      into project.ext.getdownAppDir
+      into getdownAppDir
     }
     getdownWebsiteResourceFilenames += "${getdown_app_dir}/${getdown_build_properties}"
 
@@ -954,7 +1002,7 @@ task getdownWebsite() {
     getdownResourceFilenames.each{ filename ->
       copy {
         from filename
-        into project.ext.getdownResourceDir
+        into getdownResourceDir
       }
     }
 
@@ -973,7 +1021,7 @@ task getdownWebsite() {
       getdownTextString += line
       copy {
         from f.getPath()
-        into project.ext.getdownAppDir
+        into getdownAppDir
       }
     }
 
@@ -987,7 +1035,7 @@ task getdownWebsite() {
     getdownTextString += line
     copy {
     from f.getPath()
-    into project.ext.getdownJ11libDir
+    into getdownJ11libDir
     }
     }
     }
@@ -998,16 +1046,16 @@ task getdownWebsite() {
     getdownTextString += "resource = ${getdown_launcher_new}\n"
     getdownTextString += "class = ${mainClass}\n"
 
-    def getdown_txt = file("${project.ext.getdownWebsiteDir}/getdown.txt")
+    def getdown_txt = file("${getdownWebsiteDir}/getdown.txt")
     getdown_txt.write(getdownTextString)
 
-    def launch_jvl = file("${project.ext.getdownWebsiteDir}/${getdown_launch_jvl}")
+    def launch_jvl = file("${getdownWebsiteDir}/${getdown_launch_jvl}")
     launch_jvl.write("appbase="+props.get("getdown_txt_appbase"))
 
     copy {
       from getdownLauncher
       rename(file(getdownLauncher).getName(), getdown_launcher_new)
-      into project.ext.getdownWebsiteDir
+      into getdownWebsiteDir
     }
 
     copy {
@@ -1015,7 +1063,7 @@ task getdownWebsite() {
       if (file(getdownLauncher).getName() != getdown_launcher) {
         rename(file(getdownLauncher).getName(), getdown_launcher)
       }
-      into project.ext.getdownWebsiteDir
+      into getdownWebsiteDir
     }
 
     if (! (CHANNEL.startsWith("ARCHIVE") || CHANNEL.startsWith("DEVELOP"))) {
@@ -1048,15 +1096,15 @@ task getdownWebsite() {
 
     copy {
       from getdownResourceDir
-      into "${project.ext.getdownFilesDir}/${getdown_resource_dir}"
+      into "${getdownFilesDir}/${getdown_resource_dir}"
     }
   }
 
   if (buildDist) {
     inputs.dir("${jalviewDir}/${packageDir}")
   }
-  outputs.dir(project.ext.getdownWebsiteDir)
-  outputs.dir(project.ext.getdownFilesDir)
+  outputs.dir(getdownWebsiteDir)
+  outputs.dir(getdownFilesDir)
 }
 
 
@@ -1068,9 +1116,9 @@ task getdownDigest(type: JavaExec) {
     classpath = files("${getdownWebsiteDir}/${getdown_launcher}")
   }
   main = "com.threerings.getdown.tools.Digester"
-  args project.ext.getdownWebsiteDir
-  inputs.dir(project.ext.getdownWebsiteDir)
-  outputs.file("${project.ext.getdownWebsiteDir}/digest2.txt")
+  args getdownWebsiteDir
+  inputs.dir(getdownWebsiteDir)
+  outputs.file("${getdownWebsiteDir}/digest2.txt")
 }
 
 
@@ -1099,8 +1147,8 @@ task getdown() {
 
 clean {
   doFirst {
-    delete project.ext.getdownWebsiteDir
-    delete project.ext.getdownFilesDir
+    delete getdownWebsiteDir
+    delete getdownFilesDir
   }
 }
 
@@ -1126,49 +1174,56 @@ install4j {
 }
 
 
-def install4jConf
-def macosJavaVMDir
-def macosJavaVMTgz
-def windowsJavaVMDir
-def windowsJavaVMTgz
-def install4jDir = "${jalviewDir}/${install4jResourceDir}"
-def install4jConfFile = "jalview-installers-java${JAVA_VERSION}.install4j"
-install4jConf = "${install4jDir}/${install4jConfFile}"
-
 task copyInstall4jTemplate(type: Copy) {
-  macosJavaVMDir = "${System.env.HOME}/buildtools/jre/openjdk-java_vm/getdown/macos-jre${JAVA_VERSION}/jre"
-  macosJavaVMTgz = "${System.env.HOME}/buildtools/jre/openjdk-java_vm/install4j/tgz/macos-jre${JAVA_VERSION}.tar.gz"
-  windowsJavaVMDir = "${System.env.HOME}/buildtools/jre/openjdk-java_vm/getdown/windows-jre${JAVA_VERSION}/jre"
-  windowsJavaVMTgz = "${System.env.HOME}/buildtools/jre/openjdk-java_vm/install4j/tgz/windows-jre${JAVA_VERSION}.tar.gz"
   from (install4jDir) {
     include install4jTemplate
-    rename (install4jTemplate, install4jConfFile)
-    filter(ReplaceTokens, beginToken: '', endToken: '', tokens: ['9999999999': JAVA_VERSION])
-    filter(ReplaceTokens, beginToken: '$$', endToken: '$$',
-    tokens: [
-    'JAVA_VERSION': JAVA_VERSION,
-    'JAVA_INTEGER_VERSION': JAVA_INTEGER_VERSION,
-    'VERSION': JALVIEW_VERSION,
-    'MACOS_JAVA_VM_DIR': macosJavaVMDir,
-    'MACOS_JAVA_VM_TGZ': macosJavaVMTgz,
-    'WINDOWS_JAVA_VM_DIR': windowsJavaVMDir,
-    'WINDOWS_JAVA_VM_TGZ': windowsJavaVMTgz,
-    'INSTALL4JINFOPLISTFILEASSOCIATIONS': install4jInfoPlistFileAssociations,
-    'COPYRIGHT_MESSAGE': install4jCopyrightMessage,
-    'MACOS_BUNDLE_ID': install4jMacOSBundleId,
-    'GETDOWN_RESOURCE_DIR': getdown_resource_dir,
-    'GETDOWN_DIST_DIR': getdown_app_dir,
-    'GETDOWN_ALT_DIR': getdown_app_dir_alt,
-    'GETDOWN_INSTALL_DIR': getdown_install_dir
-    ]
+    rename (install4jTemplate, install4jConfFileName)
+    filter(ReplaceTokens,
+      beginToken: '',
+      endToken: '',
+      tokens: [
+        '9999999999': JAVA_VERSION
+      ]
+    )
+    filter(ReplaceTokens,
+      beginToken: '$$',
+      endToken: '$$',
+      tokens: [
+        'JAVA_VERSION': JAVA_VERSION,
+        'JAVA_INTEGER_VERSION': JAVA_INTEGER_VERSION,
+        'VERSION': JALVIEW_VERSION,
+        'MACOS_JAVA_VM_DIR': macosJavaVMDir,
+        'MACOS_JAVA_VM_TGZ': macosJavaVMTgz,
+        'WINDOWS_JAVA_VM_DIR': windowsJavaVMDir,
+        'WINDOWS_JAVA_VM_TGZ': windowsJavaVMTgz,
+        'INSTALL4JINFOPLISTFILEASSOCIATIONS': install4jInfoPlistFileAssociations,
+        'COPYRIGHT_MESSAGE': install4jCopyrightMessage,
+        'MACOS_BUNDLE_ID': install4jMacOSBundleId,
+        'GETDOWN_RESOURCE_DIR': getdown_resource_dir,
+        'GETDOWN_DIST_DIR': getdown_app_dir,
+        'GETDOWN_ALT_DIR': getdown_app_dir_alt,
+        'GETDOWN_INSTALL_DIR': getdown_install_dir
+      ]
     )
-    if (OSX_KEYPASS=="") {
-      filter(ReplaceTokens, beginToken: 'codeSigning macEnabled="', endToken: '"', tokens: ['true':'codeSigning macEnabled="false"'])
-      filter(ReplaceTokens, beginToken: 'runPostProcessor="true" ',endToken: 'Processor', tokens: ['post':'runPostProcessor="false" postProcessor'])
+    if (OSX_KEYPASS == "") {
+      filter(ReplaceTokens,
+        beginToken: 'codeSigning macEnabled="',
+        endToken: '"',
+        tokens: [
+          'true': 'codeSigning macEnabled="false"'
+        ]
+      )
+      filter(ReplaceTokens,
+        beginToken: 'runPostProcessor="true" ',
+        endToken: 'Processor',
+        tokens: [
+          'post': 'runPostProcessor="false" postProcessor'
+        ]
+      )
     }
   }
   into install4jDir
-  outputs.files(install4jConf)
+  outputs.files(install4jConfFile)
 
   doLast {
     // include file associations in installer
@@ -1178,7 +1233,7 @@ task copyInstall4jTemplate(type: Copy) {
       flags: "s",
       match: '<action name="EXTENSIONS_REPLACED_BY_GRADLE".*?</action>',
       replace: installerFileAssociationsXml,
-      file: install4jConf
+      file: install4jConfFile
     )
     /*
     // include uninstaller applescript app files in dmg
@@ -1188,19 +1243,26 @@ task copyInstall4jTemplate(type: Copy) {
     flags: "s",
     match: '<file name="UNINSTALL_OLD_JALVIEW_APP_REPLACED_IN_GRADLE" file=.*?>',
     replace: installerDMGUninstallerXml,
-    file: install4jConf
+    file: install4jConfFile
     )
      */
   }
 }
 
 
+clean {
+  doFirst {
+    delete install4jConfFile
+  }
+}
+
+
 task installers(type: com.install4j.gradle.Install4jTask) {
   group = "distribution"
   description = "Create the install4j installers"
   dependsOn getdown
   dependsOn copyInstall4jTemplate
-  projectFile = file(install4jConf)
+  projectFile = file(install4jConfFile)
   variables = [majorVersion: version.substring(2, 11), build: 001, OSX_KEYSTORE: OSX_KEYSTORE, JSIGN_SH: JSIGN_SH]
   destination = "${jalviewDir}/${install4jBuildDir}/${JAVA_VERSION}"
   buildSelected = true
@@ -1213,8 +1275,8 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     println("Using projectFile "+projectFile)
   }
 
-  inputs.dir(project.ext.getdownWebsiteDir)
-  inputs.file(install4jConf)
+  inputs.dir(getdownWebsiteDir)
+  inputs.file(install4jConfFile)
   inputs.dir(macosJavaVMDir)
   inputs.dir(windowsJavaVMDir)
   outputs.dir("${jalviewDir}/${install4jBuildDir}/${JAVA_VERSION}")
@@ -1223,7 +1285,7 @@ task installers(type: com.install4j.gradle.Install4jTask) {
 
 clean {
   doFirst {
-    delete install4jConf
+    delete install4jConfFile
   }
 }
 
@@ -1274,28 +1336,35 @@ task sourceDist (type: Tar) {
   from(jalviewDir) {
     exclude (EXCLUDE_FILES)
     include (PROCESS_FILES)
-    filter(ReplaceTokens, beginToken: '$$', endToken: '$$', tokens: ['Version-Rel': JALVIEW_VERSION,'Year-Rel': getDate("yyyy")])
+    filter(ReplaceTokens,
+      beginToken: '$$',
+      endToken: '$$',
+      tokens: [
+        'Version-Rel': JALVIEW_VERSION,
+        'Year-Rel': getDate("yyyy")
+      ]
+    )
   }
   from(jalviewDir) {
     exclude (EXCLUDE_FILES)
     exclude (PROCESS_FILES)
-  exclude ("appletlib")
-  exclude ("**/*locales")
-  exclude ("*locales/**")
-  exclude ("utils/InstallAnywhere")
+    exclude ("appletlib")
+    exclude ("**/*locales")
+    exclude ("*locales/**")
+    exclude ("utils/InstallAnywhere")
 
     exclude (getdown_files_dir)
-  exclude (getdown_website_dir)
+    exclude (getdown_website_dir)
 
-  // exluding these as not using jars as modules yet
-  exclude ("${j11modDir}/**/*.jar")
-}
-//  from (jalviewDir) {
-//    // explicit includes for stuff that seemed to not get included
-//    include(fileTree("test/**/*."))
-//    exclude(EXCLUDE_FILES)
-//    exclude(PROCESS_FILES)
-//  }
+    // exluding these as not using jars as modules yet
+    exclude ("${j11modDir}/**/*.jar")
+  }
+  //  from (jalviewDir) {
+  //    // explicit includes for stuff that seemed to not get included
+  //    include(fileTree("test/**/*."))
+  //    exclude(EXCLUDE_FILES)
+  //    exclude(PROCESS_FILES)
+  //  }
 }
 
 
@@ -1308,24 +1377,13 @@ task helppages  {
 }
 
 
-def jalviewjsBuildDir
-def jalviewjsSiteDir
-def jalviewjsTransferSiteJsDir
-def jalviewjsTransferSiteLibDir
-def jalviewjsTransferSiteSwingJsDir
-def jalviewjsTransferSiteCoreDir
-task jalviewjsSitePath {
-  def relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath())
-  jalviewjsBuildDir = "${relativeBuildDir}/jalviewjs"
-  jalviewjsSiteDir = "${jalviewjsBuildDir}/${jalviewjs_site_dir}"
-  jalviewjsTransferSiteJsDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_js"
-  jalviewjsTransferSiteLibDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_lib"
-  jalviewjsTransferSiteSwingJsDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_swingjs"
-  jalviewjsTransferSiteCoreDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_core"
+task j2sSetHeadlessBuild {
+  doFirst {
+    IN_ECLIPSE = false
+  }
 }
 
 
-def eclipseWorkspace
 task jalviewjsSetEclipseWorkspace {
   def propKey = "jalviewjs_eclipse_workspace"
   def propVal = null
@@ -1358,6 +1416,14 @@ task jalviewjsSetEclipseWorkspace {
   eclipseWorkspace = file(eclipseWsDir)
 
   doFirst {
+    // do not run a headless transpile when we claim to be in Eclipse
+    if (IN_ECLIPSE) {
+      println("Skipping task ${name} as IN_ECLIPSE=${IN_ECLIPSE}")
+      throw new StopExecutionException("Not running headless transpile whilst IN_ECLIPSE is '${IN_ECLIPSE}'")
+    } else {
+      println("Running task ${name} as IN_ECLIPSE=${IN_ECLIPSE}")
+    }
+
     if (writeProps) {
       props.setProperty(propKey, eclipseWsDir)
       propsFile.parentFile.mkdirs()
@@ -1376,10 +1442,6 @@ task jalviewjsSetEclipseWorkspace {
 }
 
 
-def eclipseBinary
-def eclipseVersion
-def eclipseDebug = false
-def eclipseVersionSuffix = ""
 task jalviewjsEclipsePaths {
   def eclipseProduct
 
@@ -1420,6 +1482,14 @@ task jalviewjsEclipsePaths {
   eclipseDebug = (project.hasProperty(propKey) && project.getProperty(propKey).equals("true"))
 
   doFirst {
+    // do not run a headless transpile when we claim to be in Eclipse
+    if (IN_ECLIPSE) {
+      println("Skipping task ${name} as IN_ECLIPSE=${IN_ECLIPSE}")
+      throw new StopExecutionException("Not running headless transpile whilst IN_ECLIPSE is '${IN_ECLIPSE}'")
+    } else {
+      println("Running task ${name} as IN_ECLIPSE=${IN_ECLIPSE}")
+    }
+
     if (!assumedVersion) {
       println("ECLIPSE VERSION=${eclipseVersion}")
     }
@@ -1473,8 +1543,6 @@ jalviewjsEclipseCopyDropins.finalizedBy jalviewjsCleanEclipse
 
 
 task jalviewjsTransferUnzipSwingJs {
-  dependsOn jalviewjsSitePath
-
   def file_zip = "${jalviewDir}/${jalviewjs_swingjs_zip}"
 
   doLast {
@@ -1490,8 +1558,6 @@ task jalviewjsTransferUnzipSwingJs {
 
 
 task jalviewjsTransferUnzipLib {
-  dependsOn jalviewjsSitePath
-
   def zipFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_libjs_dir}", include: "*.zip")
 
   doLast {
@@ -1518,8 +1584,6 @@ task jalviewjsCreateJ2sSettings(type: WriteProperties) {
   group "JalviewJS"
   description "Create the .j2s file from the j2s.* properties"
 
-  dependsOn jalviewjsSitePath
-
   outputFile ("${jalviewDir}/${jalviewjs_j2s_settings}")
   def j2s_props = project.properties.findAll { it.key.startsWith("j2s.") }.sort { it.key }
   def siteDirProperty = "j2s.site.directory"
@@ -1551,7 +1615,6 @@ task jalviewjsEclipseSetup {
 
 
 task jalviewjsSyncAllLibs (type: Sync) {
-  dependsOn jalviewjsSitePath
   dependsOn jalviewjsTransferUnzipAllLibs
   def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteLibDir}")
   inputFiles += fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}")
@@ -1573,7 +1636,6 @@ task jalviewjsSyncAllLibs (type: Sync) {
 
 
 task jalviewjsSyncResources (type: Sync) {
-  dependsOn jalviewjsSitePath
   def inputFiles = fileTree(dir: "${jalviewDir}/${resourceDir}")
   def outputDir = "${jalviewDir}/${jalviewjsSiteDir}/${jalviewjs_j2s_subdir}"
 
@@ -1593,7 +1655,6 @@ task jalviewjsSyncResources (type: Sync) {
 
 
 task jalviewjsSyncSiteResources (type: Sync) {
-  dependsOn jalviewjsSitePath
   def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_site_resource_dir}")
   def outputDir = "${jalviewDir}/${jalviewjsSiteDir}"
 
@@ -1613,7 +1674,6 @@ task jalviewjsSyncSiteResources (type: Sync) {
 
 
 task jalviewjsSyncBuildProperties (type: Sync) {
-  dependsOn jalviewjsSitePath
   dependsOn createBuildProperties
   def inputFiles = [file(buildProperties)]
   def outputDir = "${jalviewDir}/${jalviewjsSiteDir}/${jalviewjs_j2s_subdir}"
@@ -1640,8 +1700,11 @@ task jalviewjsProjectImport(type: Exec) {
 
   doFirst {
     // do not run a headless import when we claim to be in Eclipse
-    if (ECLIPSE_IDE_DEVELOPER.equals("true")) {
-      throw new StopExecutionException("Not running headless import whilst ECLIPSE_IDE_DEVELOPER is '"+ECLIPSE_IDE_DEVELOPER+"'")
+    if (IN_ECLIPSE) {
+      println("Skipping task ${name} as IN_ECLIPSE=${IN_ECLIPSE}")
+      throw new StopExecutionException("Not running headless import whilst IN_ECLIPSE is '${IN_ECLIPSE}'")
+    } else {
+      println("Running task ${name} as IN_ECLIPSE=${IN_ECLIPSE}")
     }
   }
 
@@ -1653,6 +1716,9 @@ task jalviewjsProjectImport(type: Exec) {
     args += "-debug"
   }
   args += [ "--launcher.appendVmargs", "-vmargs", "-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_eclipse_tmp_dropins_dir}" ]
+  if (!IN_ECLIPSE) {
+    args += [ "-D${j2sHeadlessBuildProperty}=true" ]
+  }
 
   inputs.file("${jalviewDir}/.project")
   outputs.upToDateWhen { 
@@ -1668,8 +1734,11 @@ task jalviewjsTranspile(type: Exec) {
 
   doFirst {
     // do not run a headless transpile when we claim to be in Eclipse
-    if (ECLIPSE_IDE_DEVELOPER.equals("true")) {
-      throw new StopExecutionException("Not running headless transpile whilst ECLIPSE_IDE_DEVELOPER is '"+ECLIPSE_IDE_DEVELOPER+"'")
+    if (IN_ECLIPSE) {
+      println("Skipping task ${name} as IN_ECLIPSE=${IN_ECLIPSE}")
+      throw new StopExecutionException("Not running headless transpile whilst IN_ECLIPSE is '${IN_ECLIPSE}'")
+    } else {
+      println("Running task ${name} as IN_ECLIPSE=${IN_ECLIPSE}")
     }
   }
 
@@ -1807,10 +1876,7 @@ def jalviewjsCallCore(FileCollection list, String prefixFile, String suffixFile,
 }
 
 
-def jalviewjsJalviewTemplateName = "JalviewJS"
-def jalviewjsJalviewCoreName = "_jalview"
 task jalviewjsNoTranspileBuildAllCores {
-  dependsOn jalviewjsSitePath
   dependsOn jalviewjsTransferUnzipSwingJs
 
   def j2sDir = "${jalviewDir}/${jalviewjsTransferSiteJsDir}/${jalviewjs_j2s_subdir}"
@@ -1911,9 +1977,8 @@ task jalviewjsBuildAllCores {
 
 
 def jalviewjsJalviewCoreHtmlFile
-task jalviewjsPublishCoreTemplate(type: Sync) {
-  dependsOn jalviewjsSitePath
-  dependsOn jalviewjsBuildAllCores
+task jalviewjsNoTranspilePublishCoreTemplate(type: Sync) {
+  dependsOn jalviewjsNoTranspileBuildAllCores
 
   def inputFile = file("${jalviewDir}/${j2s_template_html}")
   def outputDir = "${jalviewDir}/${jalviewjsTransferSiteCoreDir}"
@@ -1929,8 +1994,22 @@ task jalviewjsPublishCoreTemplate(type: Sync) {
     }
     return null
   }
-  filter(ReplaceTokens, beginToken: '_', endToken: '_', tokens: ['MAIN': '"'+mainClass+'"', 'CODE': "null", 'NAME': jalviewjsJalviewTemplateName])
-  filter(ReplaceTokens, beginToken: '', endToken: '', tokens: ['NONE': jalviewjsJalviewCoreName])
+  filter(ReplaceTokens,
+    beginToken: '_',
+    endToken: '_',
+    tokens: [
+      'MAIN': '"'+mainClass+'"',
+      'CODE': "null",
+      'NAME': jalviewjsJalviewTemplateName
+    ]
+  )
+  filter(ReplaceTokens,
+    beginToken: '',
+    endToken: '',
+    tokens: [
+      'NONE': jalviewjsJalviewCoreName
+    ]
+  )
   preserve {
     include "**"
   }
@@ -1939,10 +2018,15 @@ task jalviewjsPublishCoreTemplate(type: Sync) {
 }
 
 
+task jalviewjsPublishCoreTemplate {
+  dependsOn jalviewjsTranspile
+  dependsOn jalviewjsPublishCoreTemplate
+}
+
+
 task jalviewjsNoTranspileSyncCore (type: Sync) {
-  dependsOn jalviewjsSitePath
   dependsOn jalviewjsNoTranspileBuildAllCores
-  dependsOn jalviewjsPublishCoreTemplate
+  dependsOn jalviewjsNoTranspilePublishCoreTemplate
   def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteCoreDir}")
   def outputDir = "${jalviewDir}/${jalviewjsSiteDir}"
 
@@ -2060,7 +2144,6 @@ task jalviewjsServer {
   group "JalviewJS"
   def filename = "jalviewjsTest.html"
   description "Starts a webserver on localhost to test the website. See ${filename} to access local site on most recently used port."
-  dependsOn jalviewjsSitePath
   def htmlFile = "${jalviewDirAbsolutePath}/${filename}"
   doLast {
 
index 710e942..f2fe5d8 100644 (file)
@@ -3,8 +3,6 @@ jalviewDir = .
 #JAVA_VERSION = 1.8
 JAVA_VERSION = 11
 
-ECLIPSE_IDE_DEVELOPER = false
-
 sourceDir = src
 #sourceDir = utils/jalviewjs/test/src
 
@@ -175,6 +173,8 @@ jalviewjs_eclipse_build_arg = cleanBuild
 jalviewjs_server_port = 9001
 jalviewjs_server_wait = 30
 jalviewjs_server_resource = /jalview_bin_Jalview.html
+jalviewjs_core_name = _jalview
+jalviewjs_name = JalviewJS
 
 j2s.compiler.status = enable
 #j2s.site.directory = null ## site defined from buildDir+'/jalviewjs/'+jalviewjs_site_dir