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"
+
}
}
task jalviewjsIDE_checkJ2sPlugin {
group "00 JalviewJS in Eclipse"
- description "Compare the swingjs/net.sf.j2s.core.jar file with the Eclipse pluing version"
+ 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.")
}
if (!eclipseJ2sPluginFile.exists()) {
def msg = "Eclipse J2S Plugin is not installed"
println(msg)
- throw new GradleException(msg)
+ if (! copyPlugin) {
+ throw new GradleException(msg)
+ }
+ doCopy = true
}
def digest = MessageDigest.getInstance("MD5")
def eclipseJ2sPluginMd5 = new BigInteger(1, digest.digest()).toString(16).padLeft(32, '0')
if (j2sPluginMd5 != eclipseJ2sPluginMd5) {
- def msg = "Eclipse J2S Plugin is different to '${j2sPlugin}'"
+ def msg = "WARNING! Eclipse J2S Plugin '${eclipseJ2sPlugin}' is different to this commit's version '${j2sPlugin}'"
println(msg)
- throw new GradleException(msg)
+ if (! copyPlugin) {
+ throw new StopExecutionException(msg)
+ }
+ doCopy = true
}
- println("Eclipse J2S Plugin is same as '${j2sPlugin}'")
+ 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)
+ }
}
}
}
-// 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
}