import org.gradle.internal.os.OperatingSystem
import org.gradle.plugins.ide.eclipse.model.Output
import org.gradle.plugins.ide.eclipse.model.Library
+import java.security.MessageDigest
import groovy.transform.ExternalizeMethods
} else {
println("HEADLESS BUILD")
}
- /*
+ /* *-/
System.properties.sort { it.key }.each {
key, val -> println("SYSTEM PROPERTY ${key}='${val}'")
}
+ /-* *-/
if (false && IN_ECLIPSE) {
jalviewDir = jalviewDirAbsolutePath
}
def removeTheseToo = []
HashMap<String, Boolean> alreadyAddedSrcPath = new HashMap<>();
cp.entries.each { entry ->
+ // This conditional removes all src classpathentries that a) have already been added or b) aren't "src" or "test".
+ // e.g. this removes the resources dir being copied into bin/main, bin/test AND bin/clover
+ // we add the resources and help/help dirs in as libs afterwards (see below)
if (entry.kind == 'src') {
if (alreadyAddedSrcPath.getAt(entry.path) || !(entry.path == bareSourceDir || entry.path == bareTestSourceDir)) {
removeTheseToo += entry
alreadyAddedSrcPath.putAt(entry.path, true)
}
}
+
}
cp.entries.removeAll(removeTheseToo)
- cp.entries += new Output("${eclipse_bin_dir}/main")
+ //cp.entries += new Output("${eclipse_bin_dir}/main")
if (file(helpSourceDir).isDirectory()) {
cp.entries += new Library(fileReference(helpSourceDir))
}
sourceSets.main.compileClasspath.findAll { it.name.endsWith(".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
- return
+ // don't add dirs to classpath, especially if they don't exist
+ return false // groovy "continue" in .any closure
}
def itPath = it.toString()
if (itPath.startsWith("${jalviewDirAbsolutePath}/")) {
// Don't want these to be activated if in headless build
synchronizationTasks "eclipseSynchronizationTask"
autoBuildTasks "eclipseAutoBuildTask"
+
}
}
commandLine pandoc, '-s', '-o', buildingHTML, '--metadata', 'pagetitle="Building Jalview from Source"', '--toc', '-H', css, buildingMD
} else {
println("Cannot find pandoc. Skipping convert building.md to HTML")
- throw new StopExecutionException()
+ throw new StopExecutionException("Cannot find pandoc. Skipping convert building.md to HTML")
}
}
javaexec {
classpath = files(["${jalviewDir}/tools/closure_compiler.jar"])
args = [ "--js", jsfile, "--js_output_file", zjsfile ]
+ maxHeapSize = "2g"
msg = "\nRunning '"+commandLine.join(' ')+"'\n"
println(msg)
}
+task jalviewjsIDE_checkJ2sPlugin {
+ group "00 JalviewJS in Eclipse"
+ description "Compare the swingjs/net.sf.j2s.core.jar file with the Eclipse IDE's plugin version (found in the 'dropins' dir)"
+
+ doFirst {
+ def j2sPlugin = string("${jalviewDir}/${jalviewjs_j2s_plugin}")
+ def j2sPluginFile = file(j2sPlugin)
+ def eclipseHome = System.properties["eclipse.home.location"]
+ def copyPlugin = jalviewjs_eclipseIDE_auto_copy_j2s_plugin == "true"
+ def doCopy = false
+ if (eclipseHome == null || ! IN_ECLIPSE) {
+ throw new StopExecutionException("Cannot find running Eclipse home from System.properties['eclipse.home.location']. Skipping J2S Plugin Check.")
+ }
+ def eclipseJ2sPlugin = "${eclipseHome}/dropins/${j2sPluginFile.getName()}"
+ def eclipseJ2sPluginFile = file(eclipseJ2sPlugin)
+ if (!eclipseJ2sPluginFile.exists()) {
+ def msg = "Eclipse J2S Plugin is not installed"
+ println(msg)
+ if (! copyPlugin) {
+ throw new GradleException(msg)
+ }
+ doCopy = true
+ }
+
+ def digest = MessageDigest.getInstance("MD5")
+
+ digest.update(j2sPluginFile.text.bytes)
+ def j2sPluginMd5 = new BigInteger(1, digest.digest()).toString(16).padLeft(32, '0')
+
+ digest.update(eclipseJ2sPluginFile.text.bytes)
+ def eclipseJ2sPluginMd5 = new BigInteger(1, digest.digest()).toString(16).padLeft(32, '0')
+
+ if (j2sPluginMd5 != eclipseJ2sPluginMd5) {
+ def msg = "WARNING! Eclipse J2S Plugin '${eclipseJ2sPlugin}' is different to this commit's version '${j2sPlugin}'"
+ println(msg)
+ if (! copyPlugin) {
+ throw new StopExecutionException(msg)
+ }
+ doCopy = true
+ }
+
+ if (doCopy) {
+ def msg = "WARNING! Auto-copying this commit's j2s plugin version '${j2sPlugin}' to Eclipse J2S Plugin '${eclipseJ2sPlugin}'\n May require an Eclipse restart"
+ println(msg)
+ copy {
+ from j2sPlugin
+ eclipseJ2sPluginFile.getParentFile().mkdirs()
+ into eclipseJ2sPluginFile.getParent()
+ }
+ } else {
+ def msg = "Eclipse J2S Plugin is the same as '${j2sPlugin}'"
+ println(msg)
+ }
+ }
+}
+
task jalviewjsIDE_j2sFile {
group "00 JalviewJS in Eclipse"
}
-// buildship runs this at import
+// buildship runs this at import or gradle refresh
task eclipseSynchronizationTask {
//dependsOn eclipseSetup
dependsOn jalviewjsIDE_j2sFile
+ dependsOn jalviewjsIDE_checkJ2sPlugin
}
-// buildship runs this at build time
+// buildship runs this at build time or project refresh
task eclipseAutoBuildTask {
+ //dependsOn jalviewjsIDE_checkJ2sPlugin
dependsOn jalviewjsIDE_PrepareSite
}