X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=build.gradle;h=f5149da1c312d6cbff6dfdfc0e19bbb005130ec2;hb=0a0cce2e9671916ffa893bff2b3e3187def66049;hp=a7c7f18a89e92c492ac90ced2666cbd4ed462946;hpb=9e31a59b947882325ffe614bd71fb732d7952a23;p=jalview.git diff --git a/build.gradle b/build.gradle index a7c7f18..f5149da 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,10 @@ import org.apache.tools.ant.filters.ReplaceTokens //import org.apache.tools.ant.filters.ReplaceRegexp import org.gradle.internal.os.OperatingSystem +import org.gradle.plugins.ide.eclipse.model.* + + +import groovy.transform.ExternalizeMethods buildscript { dependencies { @@ -48,20 +52,18 @@ def compile_target_compatibility ext { // where the getdown channel will be built. - // TODO: consider allowing this expression to be overrriden by -P arg + // TODO: consider allowing this expression to be overridden by -P arg getdownWebsiteDir = jalviewDir + '/' + getdown_website_dir + '/' + JAVA_VERSION getdownAppDir = getdownWebsiteDir + '/' + getdown_app_dir - getdownJ11libDir = getdownWebsiteDir + '/' + getdown_j11lib_dir + //getdownJ11libDir = getdownWebsiteDir + '/' + getdown_j11lib_dir getdownResourceDir = getdownWebsiteDir + '/' + getdown_resource_dir getdownLauncher = jalviewDir + '/' + getdown_launcher getdownFilesDir = jalviewDir + '/' + getdown_files_dir + '/' + JAVA_VERSION + '/' - def getdownChannel = getdown_channel_name - if (getdown_channel_name.equals("COMMIT")) { - getdownChannel = getGitHash() - } - getdown_app_base = getdown_channel_base+"/"+getdownChannel+"/"+JAVA_VERSION+"/" + getdown_app_base = getdown_channel_base+"/"+getdown_channel_name+"/"+JAVA_VERSION+"/" modules_compileClasspath = fileTree(dir: "$jalviewDir/$j11modDir", include: ["*.jar"]) modules_runtimeClasspath = modules_compileClasspath + gitHash = "" + gitBranch = "" } def JAVA_INTEGER_VERSION @@ -70,14 +72,18 @@ def additional_compiler_args = [] def getdown_alt_java_min_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_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 @@ -86,6 +92,7 @@ if (JAVA_VERSION.equals("1.8")) { compile_target_compatibility = 11 getdown_alt_java_min_version = getdown_alt_java11_min_version getdown_alt_multi_java_location = getdown_alt_java11_txt_multi_java_location + eclipse_java_runtime_name = "JavaSE-11" additional_compiler_args += [ '--module-path', ext.modules_compileClasspath.asPath, '--add-modules', j11modules @@ -104,7 +111,6 @@ sourceSets { resources { srcDirs "$jalviewDir/$resourceDir" - srcDirs "$jalviewDir/$libDistDir" } jar.destinationDir = file("$jalviewDir/$packageDir") @@ -149,8 +155,7 @@ sourceSets { } else { compileClasspath += files(sourceSets.main.java.outputDir) } - compileClasspath += sourceSets.main.compileClasspath - compileClasspath += files( sourceSets.main.resources.srcDirs) + compileClasspath += fileTree(dir: "$jalviewDir/$utilsDir", include: ["**/*.jar"]) compileClasspath += fileTree(dir: "$jalviewDir/$libDir", include: ["*.jar"]) @@ -190,7 +195,6 @@ eclipse { removeThese += it } } - containers 'org.eclipse.buildship.core.gradleclasspathcontainer' minusConfigurations += removeThese plusConfigurations = [ ] @@ -209,39 +213,21 @@ eclipse { } } cp.entries.removeAll(removeTheseToo) - } - - withXml { - def node = it.asNode() - def srcTestAttributes - node.children().each{ cpe -> - def attributes = cpe.attributes() - if (attributes.get("kind") == "src" && attributes.get("path") == "test") { - srcTestAttributes = cpe.find { a -> a.name() == "attributes" } - return - } - } - def addTestAttribute = true - srcTestAttributes.each{a -> - if (a.name() == "attribute" && a.attributes().getAt("name") == "test") { - addTestAttribute = false - } - } - if (addTestAttribute) { - srcTestAttributes.append(new Node(null, "attribute", [name:"test", value:"true"])) - } - - node.appendNode('classpathentry', [kind:"output", path:"bin/main"]) - node.appendNode('classpathentry', [kind:"lib", path:helpParentDir]) - node.appendNode('classpathentry', [kind:"lib", path:resourceDir]) + + print ("CP="+cp.inspect()) + + cp.entries += new Output("bin/main") + cp.entries += new Library(fileReference(helpParentDir)) + cp.entries += new Library(fileReference(resourceDir)) + HashMap addedLibPath = new HashMap<>(); - def allPaths = sourceSets.test.compileClasspath + sourceSets.main.compileClasspath - sourceSets.main.compileClasspath.each{ - //if ((it.isDirectory() || ! it.exists()) && ! (it.equals(sourceSets.main.java.outputDir))) { - //no longer want to add outputDir as eclipse is using its own output dir in bin/main + + // changing from sourcesets.main.classpath to specific Java version lib + //sourceSets.main.compileClasspath.each{ + fileTree("$jalviewDir/$libDistDir").include("**/*.jar").include("*.jar").each { + //don't want to add outputDir as eclipse is using its own output dir in bin/main if (it.isDirectory() || ! it.exists()) { // don't add dirs to classpath - //println("Not adding directory "+it) return } def itPath = it.toString() @@ -252,47 +238,82 @@ eclipse { //println("Not adding duplicate entry "+itPath) } else { //println("Adding entry "+itPath) - node.appendNode('classpathentry', [kind:"lib", path:itPath]) + cp.entries += new Library(fileReference(itPath)) addedLibPath.put(itPath, true) } } - sourceSets.test.compileClasspath.each{ + + // changing from sourcesets.main.classpath to specific Java version lib + //sourceSets.test.compileClasspath.each{ + fileTree(dir: "$jalviewDir/$utilsDir", include: ["**/*.jar"]).each { //if ((it.isDirectory() || ! it.exists()) && ! (it.equals(sourceSets.main.java.outputDir))) { //no longer want to add outputDir as eclipse is using its own output dir in bin/main if (it.isDirectory() || ! it.exists()) { // don't add dirs to classpath - //println("Not adding directory "+it) - return + return false // groovy "break" in .each loop } def itPath = it.toString() if (itPath.startsWith(jalviewDirAbsolutePath+"/")) { itPath = itPath.substring(jalviewDirAbsolutePath.length()+1) } if (addedLibPath.get(itPath)) { - //println("Not adding duplicate entry "+itPath) + // don't duplicate } else { - //println("Adding entry "+itPath) - node.appendNode('classpathentry', [kind:"lib", path:itPath]) - .appendNode('attributes') - .appendNode('attribute', [name:"test", value:"true"]) + def lib = new Library(fileReference(itPath)) + // this doesn't work... yet. Adding test=true attribute using withXml below + //def attrs = new Node(null, 'attributes', ["test":"true"]) + //lib.appendNode(attrs) // + cp.entries += lib addedLibPath.put(itPath, true) } } - } + } - } - } + // withXml changes ignored by buildship, these add the "test=true" attribute + withXml { + def node = it.asNode() + + def srcTestAttributes + node.children().each{ cpe -> + def attributes = cpe.attributes() + if (attributes.get("kind") == "src" && attributes.get("path") == "test") { + srcTestAttributes = cpe.find { a -> a.name() == "attributes" } + return + } + } + def addTestAttribute = true + srcTestAttributes.each{a -> + if (a.name() == "attribute" && a.attributes().getAt("name") == "test") { + addTestAttribute = false + } + } + if (addTestAttribute) { + srcTestAttributes.append(new Node(null, "attribute", [name:"test", value:"true"])) + } + + node.children().each{ cpe -> + def attributes = cpe.attributes() + if (attributes.get("kind") == "lib" && attributes.get("path").startsWith("utils/")) { + cpe.appendNode('attributes') + .appendNode('attribute', [name:"test", value:"true"]) + } + } + } // withXML + } // file + + containers 'org.eclipse.buildship.core.gradleclasspathcontainer' + } // classpath jdt { // for the IDE, use java 11 compatibility - sourceCompatibility = 11 - targetCompatibility = 11 - javaRuntimeName = "JavaSE-11" + sourceCompatibility = compile_source_compatibility + targetCompatibility = compile_target_compatibility + javaRuntimeName = eclipse_java_runtime_name file { withProperties { props -> def jalview_prefs = new Properties() - def ins = new FileInputStream(eclipse_extra_jdt_prefs_file) + def ins = new FileInputStream(jalviewDirAbsolutePath+"/"+eclipse_extra_jdt_prefs_file) jalview_prefs.load(ins) ins.close() jalview_prefs.forEach { t, v -> @@ -303,8 +324,10 @@ eclipse { } } } - -} + + //synchronizationTasks eclipseClasspath + //autoBuildTasks eclipseClasspath +} task cloverInstr() { // only instrument source, we build test classes as normal @@ -323,7 +346,7 @@ task cloverInstr() { com.atlassian.clover.CloverInstr.mainImpl(args) } } - + task cloverReport { group = "Verification" @@ -396,47 +419,89 @@ cleanTest { delete cloverInstrDir } +// format is a string like date.format("dd MMMM yyyy") def getDate(format) { def date = new Date() - //return date.format("dd MMMM yyyy") return date.format(format) } -def getGitHash() { - def stdout = new ByteArrayOutputStream() +task setGitVals { + def hashStdOut = new ByteArrayOutputStream() exec { commandLine "git", "rev-parse", "--short", "HEAD" - standardOutput = stdout - workingDir = jalviewDir + standardOutput = hashStdOut + ignoreExitValue true } - return stdout.toString().trim() -} -def getGitBranch() { - def stdout = new ByteArrayOutputStream() + def branchStdOut = new ByteArrayOutputStream() exec { commandLine "git", "rev-parse", "--abbrev-ref", "HEAD" - standardOutput = stdout - workingDir = jalviewDir + standardOutput = branchStdOut + ignoreExitValue true } - return stdout.toString().trim() + + project.ext.gitHash = hashStdOut.toString().trim() + project.ext.gitBranch = branchStdOut.toString().trim() + + outputs.upToDateWhen { false } } task createBuildProperties(type: WriteProperties) { + dependsOn setGitVals inputs.dir("$jalviewDir/$sourceDir") + inputs.dir("$classes") inputs.dir("$jalviewDir/$resourceDir") outputFile "$classes/$buildPropertiesFile" - /* taking time/date 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("dd MMMM yyyy") + // 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:"+getGitHash()+" ["+getGitBranch()+"]" + property "INSTALLATION", INSTALLATION+" git-commit:"+project.ext.gitHash+" ["+project.ext.gitBranch+"]" outputs.file(outputFile) - outputs.dir("$classes") +} + +def buildingHTML = "$jalviewDir/$docDir/building.html" +task deleteBuildingHTML(type: Delete) { + delete buildingHTML +} + +task convertBuildingMD(type: Exec) { + dependsOn deleteBuildingHTML + def buildingMD = "$jalviewDir/$docDir/building.md" + def css = "$jalviewDir/$docDir/github.css" + + def pandoc = null + pandoc_exec.split(",").each { + if (file(it.trim()).exists()) { + pandoc = it.trim() + return true + } + } + + def hostname = "hostname".execute().text.trim() + if ((pandoc == null || ! file(pandoc).exists()) && hostname.equals("jv-bamboo")) { + pandoc = System.getProperty("user.home")+"/buildtools/pandoc/bin/pandoc" + } + + if (pandoc != null && file(pandoc).exists()) { + commandLine pandoc, '-s', '-o', buildingHTML, '--metadata', 'pagetitle="Building Jalview from Source"', '--toc', '-H', css, buildingMD + } else { + commandLine "true" + } + + ignoreExitValue true + + inputs.file(buildingMD) + inputs.file(css) + outputs.file(buildingHTML) +} +clean { + delete buildingHTML } task syncDocs(type: Sync) { + dependsOn convertBuildingMD def syncDir = "$classes/$docDir" from fileTree("$jalviewDir/$docDir") into syncDir @@ -623,6 +688,7 @@ task cleanDist { } shadowJar { + group = "distribution" dependsOn makeDist from ("$jalviewDir/$libDistDir") { include("*.jar")