Merge branch 'develop' into bug/JAL-3753_resources_duplicated_in_jalview_jar
authorBen Soares <b.soares@dundee.ac.uk>
Mon, 28 Sep 2020 11:12:47 +0000 (12:12 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Mon, 28 Sep 2020 11:12:47 +0000 (12:12 +0100)
1  2 
build.gradle
gradle.properties

diff --combined build.gradle
@@@ -111,7 -111,7 +111,7 @@@ ext 
    }
    ////
    // Set JALVIEW_VERSION if it is not already set
-   if (findProperty(JALVIEW_VERSION)==null || "".equals(JALVIEW_VERSION)) {
+   if (findProperty("JALVIEW_VERSION")==null || "".equals(JALVIEW_VERSION)) {
      JALVIEW_VERSION = releaseProps.get("jalview.version")
    }
    
    //cloverTestClassesDir = cloverClassesDir
    cloverDb = string("${cloverBuildDir}/clover.db")
  
 -  resourceClassesDir = useClover ? cloverClassesDir : classesDir
 -
    testSourceDir = useClover ? cloverTestInstrDir : testDir
    testClassesDir = useClover ? cloverTestClassesDir : "${jalviewDir}/${test_output_dir}"
  
    getdownAppBase = string("${getdown_channel_base}/${getdownDir}")
    getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}")
    getdownAppDistDir = getdown_app_dir_alt
 -  buildProperties = string("${resourceDir}/${build_properties_file}")
    reportRsyncCommand = false
    jvlChannelName = CHANNEL.toLowerCase()
    install4jSuffix = CHANNEL.substring(0, 1).toUpperCase() + CHANNEL.substring(1).toLowerCase(); // BUILD -> Build
      // DEVELOP-RELEASE is usually associated with a Jalview release series so set the version
      JALVIEW_VERSION=JALVIEW_VERSION+"-develop"
      
 +    channelPropertiesFile = string("${channel_properties_dir}/develop_properties")
 +    getdownImagesDir = "${getdown_images_dir}/develop"
 +    getdownBgColour = "000000"
 +    getdownFgColour = "FFFFFF"
 +    getdownLightFgColour = "CCCCFF"
      install4jSuffix = "Develop"
      install4jDSStore = "DS_Store-DEVELOP"
      install4jDMGBackgroundImage = "jalview_dmg_background-DEVELOP.png"
      install4jExtraScheme = "jalviewd"
      install4jInstallerName = "${jalview_name} Develop Installer"
 +    install4jMacIconsFile = string("${install4j_utils_dir}/develop/${install4j_mac_icons_file}")
 +    install4jWindowsIconsFile = string("${install4j_utils_dir}/develop/${install4j_windows_icons_file}")
 +    install4jPngIconFile = string("${install4j_utils_dir}/develop/${install4j_png_icon_file}")
      break
  
      case "TEST-RELEASE":
      install4jHomeDir = System.getProperty("user.home") + install4jHomeDir.substring(1)
    }
  
 +  resourceBuildDir = string("${buildDir}/resources")
 +  resourcesBuildDir = string("${resourceBuildDir}/resources_build")
 +  helpBuildDir = string("${resourceBuildDir}/help_build")
 +  docBuildDir = string("${resourceBuildDir}/doc_build")
  
 -
 +  buildProperties = string("${resourcesBuildDir}/${build_properties_file}")
    buildingHTML = string("${jalviewDir}/${doc_dir}/building.html")
 -  helpFile = string("${resourceClassesDir}/${help_dir}/help.jhm")
    helpParentDir = string("${jalviewDir}/${help_parent_dir}")
    helpSourceDir = string("${helpParentDir}/${help_dir}")
 +  helpFile = string("${helpBuildDir}/${help_dir}/help.jhm")
  
  
    relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath())
@@@ -491,14 -482,16 +491,14 @@@ sourceSets 
      }
  
      resources {
 -      srcDirs resourceDir
 -      srcDirs += helpParentDir
 +      srcDirs = [ resourcesBuildDir, docBuildDir, helpBuildDir ]
      }
  
 -    jar.destinationDir = file("${jalviewDir}/${package_dir}")
 -
      compileClasspath = files(sourceSets.main.java.outputDir)
      compileClasspath += fileTree(dir: "${jalviewDir}/${libDir}", include: ["*.jar"])
  
      runtimeClasspath = compileClasspath
 +    runtimeClasspath += files(sourceSets.main.resources.srcDirs)
    }
  
    clover {
      compileClasspath += fileTree(dir: "${jalviewDir}/${utils_dir}/testnglibs", include: ["**/*.jar"])
  
      runtimeClasspath = compileClasspath
 +    runtimeClasspath += files(sourceSets.test.resources.srcDirs)
    }
  
  }
@@@ -556,12 -548,14 +556,12 @@@ eclipse 
  
    classpath {
      //defaultOutputDir = sourceSets.main.java.outputDir
 -    def removeThese = []
 -    configurations.each{
 -      if (it.isCanBeResolved()) {
 -        removeThese += it
 +    configurations.each{ c->
 +      if (c.isCanBeResolved()) {
 +        minusConfigurations += [c]
        }
      }
  
 -    minusConfigurations += removeThese
      plusConfigurations = [ ]
      file {
  
@@@ -1011,6 -1005,38 +1011,6 @@@ def getDate(format) 
  }
  
  
 -task createBuildProperties(type: WriteProperties) {
 -  group = "build"
 -  description = "Create the ${buildProperties} file"
 -  
 -  inputs.dir(sourceDir)
 -  inputs.dir(resourceDir)
 -  file(buildProperties).getParentFile().mkdirs()
 -  outputFile (buildProperties)
 -  // taking time specific comment out to allow better incremental builds
 -  comment "--Jalview Build Details--\n"+getDate("yyyy-MM-dd HH:mm:ss")
 -  //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:"+gitHash+" ["+gitBranch+"]"
 -  outputs.file(outputFile)
 -}
 -
 -
 -clean {
 -  doFirst {
 -    delete buildProperties
 -  }
 -}
 -
 -
 -task cleanBuildingHTML(type: Delete) {
 -  doFirst {
 -    delete buildingHTML
 -  }
 -}
 -
 -
  def convertMdToHtml (FileTree mdFiles, File cssFile) {
    MutableDataSet options = new MutableDataSet()
  
  }
  
  
 +task copyDocs(type: Copy) {
 +  def inputDir = "${jalviewDir}/${doc_dir}"
 +  def outputDir = "${docBuildDir}/${doc_dir}"
 +  from(inputDir) {
 +    include('**/*.txt')
 +    include('**/*.md')
 +    include('**/*.html')
 +    include('**/*.xml')
 +    filter(ReplaceTokens,
 +      beginToken: '$$',
 +      endToken: '$$',
 +      tokens: [
 +        'Version-Rel': JALVIEW_VERSION,
 +        'Year-Rel': getDate("yyyy")
 +      ]
 +    )
 +  }
 +  from(inputDir) {
 +    exclude('**/*.txt')
 +    exclude('**/*.md')
 +    exclude('**/*.html')
 +    exclude('**/*.xml')
 +  }
 +  into outputDir
 +
 +  inputs.dir(inputDir)
 +  outputs.dir(outputDir)
 +}
 +
 +
  task convertMdFiles {
 -  dependsOn cleanBuildingHTML
 -  def mdFiles = fileTree(dir: "${jalviewDir}/${doc_dir}", include: "*.md")
 +  dependsOn copyDocs
 +  def mdFiles = fileTree(dir: docBuildDir, include: "*.md")
    def cssFile = file("${jalviewDir}/${flexmark_css}")
  
    doLast {
  }
  
  
 -task syncDocs(type: Sync) {
 -  dependsOn convertMdFiles
 -  def syncDir = "${classesDir}/${doc_dir}"
 -  from fileTree("${jalviewDir}/${doc_dir}")
 -  into syncDir
 -}
 -
 -
  task copyHelp(type: Copy) {
    def inputDir = helpSourceDir
 -  def outputDir = "${resourceClassesDir}/${help_dir}"
 +  def outputDir = "${helpBuildDir}/${help_dir}"
    from(inputDir) {
 -    exclude '**/*.gif'
 -    exclude '**/*.jpg'
 -    exclude '**/*.png'
 +    include('**/*.txt')
 +    include('**/*.md')
 +    include('**/*.html')
 +    include('**/*.hs')
 +    include('**/*.xml')
 +    include('**/*.jhm')
      filter(ReplaceTokens,
        beginToken: '$$',
        endToken: '$$',
      )
    }
    from(inputDir) {
 -    include '**/*.gif'
 -    include '**/*.jpg'
 -    include '**/*.png'
 +    exclude('**/*.txt')
 +    exclude('**/*.md')
 +    exclude('**/*.html')
 +    exclude('**/*.hs')
 +    exclude('**/*.xml')
 +    exclude('**/*.jhm')
    }
    into outputDir
  
  }
  
  
 -task syncLib(type: Sync) {
 -  def syncDir = "${resourceClassesDir}/${libDistDir}"
 -  from fileTree("${jalviewDir}/${libDistDir}")
 -  into syncDir
 +task copyResources(type: Copy) {
 +  def inputDir = resourceDir
 +  def outputDir = resourcesBuildDir
 +  from(inputDir) {
 +    include('**/*.txt')
 +    include('**/*.md')
 +    include('**/*.html')
 +    include('**/*.xml')
 +    filter(ReplaceTokens,
 +      beginToken: '$$',
 +      endToken: '$$',
 +      tokens: [
 +        'Version-Rel': JALVIEW_VERSION,
 +        'Year-Rel': getDate("yyyy")
 +      ]
 +    )
 +  }
 +  from(inputDir) {
 +    exclude('**/*.txt')
 +    exclude('**/*.md')
 +    exclude('**/*.html')
 +    exclude('**/*.xml')
 +  }
 +  into outputDir
 +
 +  inputs.dir(inputDir)
 +  outputs.dir(outputDir)
  }
  
  
 -task syncResources(type: Sync) {
 -  dependsOn createBuildProperties
 -  from resourceDir
 -  include "**/*.*"
 -  into "${resourceClassesDir}"
 -  preserve {
 -    include "**"
 -  }
 +task createBuildProperties(type: WriteProperties) {
 +  dependsOn copyResources
 +  group = "build"
 +  description = "Create the ${buildProperties} file"
 +  
 +  inputs.dir(sourceDir)
 +  inputs.dir(resourcesBuildDir)
 +  outputFile (buildProperties)
 +  // taking time specific comment out to allow better incremental builds
 +  comment "--Jalview Build Details--\n"+getDate("yyyy-MM-dd HH:mm:ss")
 +  //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:"+gitHash+" ["+gitBranch+"]"
 +  outputs.file(outputFile)
  }
  
  
  task prepare {
 -  dependsOn syncResources
 -  dependsOn syncDocs
 +  dependsOn copyResources
 +  dependsOn copyDocs
    dependsOn copyHelp
 +  dependsOn createBuildProperties
 +  dependsOn convertMdFiles
  }
  
  
 +compileJava.dependsOn prepare
 +run.dependsOn compileJava
 +//run.dependsOn prepare
 +
 +
  //testReportDirName = "test-reports" // note that test workingDir will be $jalviewDir
  test {
    dependsOn prepare
 -  //dependsOn compileJava ////? DELETE
  
    if (useClover) {
      dependsOn cloverClasses
     } else { //?
 -     dependsOn compileJava //?
 +    dependsOn compileJava //?
    }
  
    useTestNG() {
    maxHeapSize = "1024m"
  
    workingDir = jalviewDir
 -  //systemProperties 'clover.jar' System.properties.clover.jar
    def testLaf = project.findProperty("test_laf")
    if (testLaf != null) {
      println("Setting Test LaF to '${testLaf}'")
@@@ -1278,7 -1241,7 +1278,7 @@@ task buildIndices(type: JavaExec) 
    dependsOn copyHelp
    classpath = sourceSets.main.compileClasspath
    main = "com.sun.java.help.search.Indexer"
 -  workingDir = "${classesDir}/${help_dir}"
 +  workingDir = "${helpBuildDir}/${help_dir}"
    def argDir = "html"
    args = [ argDir ]
    inputs.dir("${workingDir}/${argDir}")
@@@ -1314,7 -1277,7 +1314,7 @@@ task linkCheck(type: JavaExec) 
    classpath = files("${jalviewDir}/${utils_dir}")
    main = "HelpLinksChecker"
    workingDir = jalviewDir
 -  args = [ "${classesDir}/${help_dir}", "-nointernet" ]
 +  args = [ "${helpBuildDir}/${help_dir}", "-nointernet" ]
  
    def outFOS = new FileOutputStream(helpLinksCheckerOutFile, false) // false == don't append
    def errFOS = outFOS
      outFOS,
      errorOutput)
  
 -  inputs.dir("${classesDir}/${help_dir}")
 +  inputs.dir(helpBuildDir)
    outputs.file(helpLinksCheckerOutFile)
  }
  
 +
  // import the pubhtmlhelp target
  ant.properties.basedir = "${jalviewDir}"
 -ant.properties.helpBuildDir = "${jalviewDirAbsolutePath}/${classes_dir}/${help_dir}"
 +ant.properties.helpBuildDir = "${helpBuildDir}/${help_dir}"
  ant.importBuild "${utils_dir}/publishHelp.xml"
  
  
@@@ -1347,18 -1309,16 +1347,18 @@@ jar 
    dependsOn linkCheck
    dependsOn buildIndices
    dependsOn createBuildProperties
 +  dependsOn prepare
  
    manifest {
      attributes "Main-Class": main_class,
      "Permissions": "all-permissions",
 -    "Application-Name": "Jalview Desktop",
 -    "Codebase": application_codebase
 +    "Application-Name": install4jApplicationName,
 +    "Codebase": application_codebase,
 +    "Implementation-Version": JALVIEW_VERSION
    }
  
 -  destinationDir = file("${jalviewDir}/${package_dir}")
 -  archiveName = rootProject.name+".jar"
 +  destinationDirectory = file("${jalviewDir}/${package_dir}")
 +  archiveFileName = rootProject.name+".jar"
  
    exclude "cache*/**"
    exclude "*.jar"
    exclude "**/*.jar"
    exclude "**/*.jar.*"
  
 -  inputs.dir(classesDir)
 -  outputs.file("${jalviewDir}/${package_dir}/${archiveName}")
 +  inputs.dir(sourceSets.main.java.outputDir)
 +  sourceSets.main.resources.srcDirs.each{ dir ->
 +    inputs.dir(dir)
 +  }
 +  outputs.file("${destinationDirectory}/${archiveFileName}")
  }
  
  
@@@ -1382,11 -1339,10 +1382,11 @@@ task copyJars(type: Copy) 
  
  // doing a Sync instead of Copy as Copy doesn't deal with "outputs" very well
  task syncJars(type: Sync) {
 +  dependsOn jar
    from fileTree(dir: "${jalviewDir}/${libDistDir}", include: "**/*.jar").files
    into "${jalviewDir}/${package_dir}"
    preserve {
 -    include jar.archiveName
 +    include jar.archiveFileName.getOrNull()
    }
  }
  
@@@ -1410,7 -1366,6 +1410,7 @@@ task cleanDist 
    dependsOn clean
  }
  
 +
  shadowJar {
    group = "distribution"
    description = "Create a single jar file with all dependency libraries merged. Can be run with java -jar"
      include("*.jar")
    }
    manifest {
 -    attributes 'Implementation-Version': JALVIEW_VERSION
 +    attributes "Implementation-Version": JALVIEW_VERSION,
 +    "Application-Name": install4jApplicationName
    }
    mainClassName = shadow_jar_main_class
    mergeServiceFiles()
@@@ -1895,7 -1849,12 +1895,7 @@@ task sourceDist(type: Tar) 
  
    def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
    def outputFileName = "${project.name}_${VERSION_UNDERSCORES}.tar.gz"
 -  // cater for buildship < 3.1 [3.0.1 is max version in eclipse 2018-09]
 -  try {
 -    archiveFileName = outputFileName
 -  } catch (Exception e) {
 -    archiveName = outputFileName
 -  }
 +  archiveFileName = outputFileName
    
    compression Compression.GZIP
    
@@@ -1985,7 -1944,7 +1985,7 @@@ task helppages 
    dependsOn copyHelp
    dependsOn pubhtmlhelp
    
 -  inputs.dir("${classesDir}/${help_dir}")
 +  inputs.dir("${helpBuildDir}/${help_dir}")
    outputs.dir("${buildDir}/distributions/${help_dir}")
  }
  
@@@ -2789,7 -2748,11 +2789,7 @@@ task jalviewjsSiteTar(type: Tar) 
    description "Creates a tar.gz file for the website"
    dependsOn jalviewjsBuildSite
    def outputFilename = "jalviewjs-site-${JALVIEW_VERSION}.tar.gz"
 -  try {
 -    archiveFileName = outputFilename
 -  } catch (Exception e) {
 -    archiveName = outputFilename
 -  }
 +  archiveFileName = outputFilename
  
    compression Compression.GZIP
  
diff --combined gradle.properties
@@@ -13,7 -13,8 +13,8 @@@ source_dir = sr
  test_source_dir = test
  #test_source_dir = utils/jalviewjs/test/test
  
- JALVIEW_VERSION = DEVELOPMENT
+ # JALVIEW_VERSION now being set by logic in build.gradle defaulting to looking at jalview.version property in RELEASE file
+ #JALVIEW_VERSION = DEVELOPMENT
  INSTALLATION = Source
  jalview_keystore = keys/.keystore
  jalview_keystore.pass = alignmentisfun
@@@ -60,6 -61,7 +61,6 @@@ jalview_name = Jalvie
  getdown_local = false
  getdown_website_dir = getdown/website
  getdown_resource_dir = resource
 -#getdown_j11lib_dir = j11lib
  getdown_files_dir = getdown/files
  getdown_lib_dir = getdown/lib
  getdown_launcher = getdown-launcher.jar