From 18fc01135eab90fde75cd7b01fd0e77a141505bf Mon Sep 17 00:00:00 2001 From: Ben Soares Date: Thu, 6 Jun 2019 15:06:58 +0100 Subject: [PATCH] JAL-3225 Classpath now made in eclipse.classpath.file.whenMerged and recognised by buildship :) --- build.gradle | 151 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 85 insertions(+), 66 deletions(-) diff --git a/build.gradle b/build.gradle index a7c7f18..b07ea37 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 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 @@ -149,8 +151,8 @@ sourceSets { } else { compileClasspath += files(sourceSets.main.java.outputDir) } - compileClasspath += sourceSets.main.compileClasspath - compileClasspath += files( sourceSets.main.resources.srcDirs) + //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 +192,6 @@ eclipse { removeThese += it } } - containers 'org.eclipse.buildship.core.gradleclasspathcontainer' minusConfigurations += removeThese plusConfigurations = [ ] @@ -209,31 +210,11 @@ 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]) + + 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{ @@ -241,7 +222,6 @@ eclipse { //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 } def itPath = it.toString() @@ -252,36 +232,69 @@ 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{ //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 @@ -292,7 +305,7 @@ eclipse { 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 +316,10 @@ eclipse { } } } - -} + + synchronizationTasks eclipseClasspath + autoBuildTasks eclipseClasspath +} task cloverInstr() { // only instrument source, we build test classes as normal @@ -323,7 +338,7 @@ task cloverInstr() { com.atlassian.clover.CloverInstr.mainImpl(args) } } - + task cloverReport { group = "Verification" @@ -402,36 +417,40 @@ def getDate(format) { return date.format(format) } -def getGitHash() { - def stdout = new ByteArrayOutputStream() - exec { - commandLine "git", "rev-parse", "--short", "HEAD" - standardOutput = stdout - workingDir = jalviewDir +task setGitHash(type: Exec) { + workingDir = jalviewDir + commandLine "git", "rev-parse", "--short", "HEAD" + standardOutput = new ByteArrayOutputStream() + project.ext.gitHash = { + return standardOutput.toString().trim() } - return stdout.toString().trim() } -def getGitBranch() { - def stdout = new ByteArrayOutputStream() - exec { - commandLine "git", "rev-parse", "--abbrev-ref", "HEAD" - standardOutput = stdout - workingDir = jalviewDir +task setGitBranch(type: Exec) { + workingDir = jalviewDir + commandLine "git", "rev-parse", "--abbrev-ref", "HEAD" + standardOutput = new ByteArrayOutputStream() + project.ext.gitBranch = { + return standardOutput.toString().trim() } - return stdout.toString().trim() +} + +task setGitVals { + dependsOn setGitHash + dependsOn setGitBranch } task createBuildProperties(type: WriteProperties) { + dependsOn setGitVals inputs.dir("$jalviewDir/$sourceDir") inputs.dir("$jalviewDir/$resourceDir") outputFile "$classes/$buildPropertiesFile" - /* taking time/date specific comment out to allow better incremental builds */ + // 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("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") } -- 1.7.10.2