X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=build.gradle;h=26159324f80cca9f24281ccf3894cb83457f10af;hb=refs%2Fheads%2FJalview-JS%2Fgradle_with_goomph;hp=9aef0ff759048c6b8bd5b60c0d94e2f671cbafe3;hpb=7837ecd37305f0fd7c220c43d63561fbca691f31;p=jalview.git diff --git a/build.gradle b/build.gradle index 9aef0ff..2615932 100644 --- a/build.gradle +++ b/build.gradle @@ -1,93 +1,203 @@ -import org.apache.tools.ant.filters.ReplaceTokens import org.gradle.internal.os.OperatingSystem -import org.gradle.plugins.ide.eclipse.model.* -import groovy.transform.ExternalizeMethods -//import org.eclipse.osgi.* +import org.gradle.plugins.ide.eclipse.model.Output +import org.gradle.plugins.ide.eclipse.model.Library + import com.diffplug.gradle.GoomphCacheLocations -/* buildscript { - repositories { - repos - mavenCentral() - jcenter() - } - dependencies { - //eclipseDeps.each { compile "p2:${it}:+" } - //classpath 'org.eclipse.platform:org.eclipse.osgi:3.15.0' - //compile group: 'org.eclipse.platform', name: 'org.eclipse.osgi', version: '3.15.0' - //classpath 'biz.aQute.bnd:biz.aQute.bnd.gradle:4.4.0' - } } -*/ plugins { id 'java' id 'application' id 'eclipse' + id 'com.diffplug.gradle.oomph.ide' version '3.18.1' id 'com.diffplug.gradle.equinoxlaunch' version '3.18.1' + id 'com.diffplug.gradle.eclipse.mavencentral' version '3.18.1' + id 'com.diffplug.gradle.p2.asmaven' version '3.18.1' +} - //id 'com.diffplug.gradle.p2.asmaven' version '3.18.1' +def jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath() +def useIde = useGoomph.equals("true") - //id 'org.eclipse.osgi' version '3.15.0' - //id 'osgi' +repositories { + jcenter() + mavenCentral() + flatDir { + dirs gradlePluginsDir + } + if (true || useIde) { + flatDir { + dirs jalviewjs_utils_dir+"/"+jalviewjs_eclipse_dropins_dir + } + } } +configurations { + jalviewjsIde +} -/* -def eclipseDeps = [ - // The dependencies we actually use - 'org.eclipse.jdt.core', - 'org.eclipse.text', - - // Their transitives - 'org.eclipse.core.contenttype', - 'org.eclipse.core.jobs', - 'org.eclipse.core.runtime', - 'org.eclipse.core.resources', - 'org.eclipse.equinox.common', - 'org.eclipse.equinox.preferences', - //'org.eclipse.osgi' -] -*/ -/* -p2AsMaven { - group 'p2', { - repoEclipse goomph_eclipse_version - eclipseDeps.each { p2.addIU(it) } - eclipseDeps.each { p2.addIU(it + '.source') } +if (useIde) { + + p2AsMaven { + group 'eclipseDeps', { + repoEclipse goomph_eclipse_repo_version + //slicingOption 'latestVersionOnly', 'true' + iu 'org.eclipse.update.configurator' + + + iu 'org.eclipse.jdt.apt.core' + iu 'org.eclipse.jdt.core' + iu 'org.eclipse.jdt.annotation' + + } + group 'ecjDeps', { + repo 'https://download.eclipse.org/eclipse/updates/4.13/R-4.13-201909161045/' + iu 'org.eclipse.debug.core' + iu 'org.eclipse.jdt.apt.pluggable.core' + iu 'org.eclipse.jdt.apt.ui' + iu 'org.eclipse.jdt.compiler.apt' + iu 'org.eclipse.jdt.compiler.tool' + iu 'org.eclipse.jdt.core.manipulation' + iu 'org.eclipse.jdt.debug' + iu 'org.eclipse.jdt.debug.ui' + iu 'org.eclipse.jdt.doc.user' + iu 'org.eclipse.jdt.junit' + iu 'org.eclipse.jdt.junit.core' + iu 'org.eclipse.jdt.junit4.runtime' + iu 'org.eclipse.jdt.junit4.runtime' + iu 'org.eclipse.jdt.junit5.runtime' + iu 'org.eclipse.jdt.launching' + iu 'org.eclipse.jdt.ui' + + iu 'org.eclipse.jdt.launching.macosx' + iu 'org.eclipse.jdt.launching.ui.macosx' + } + group 'eclipseOrbit', { + repo goomph_orbit_repo + slicingOption 'latestVersionOnly', 'true' + iu 'javax.el' + iu 'javax.servlet' + iu 'javax.servlet.jsp' + iu 'org.apache.ant' + iu 'org.apache.batik.constants' + iu 'org.apache.batik.css' + iu 'org.apache.batik.i18n' + iu 'org.apache.batik.util' + iu 'org.apache.commons.beanutils' + iu 'org.apache.commons.collections' + iu 'org.apache.commons.jxpath' + iu 'org.apache.commons.io' + iu 'org.apache.commons.logging' + iu 'org.apache.xmlgraphics' + iu 'org.jdom' + iu 'org.w3c.dom.events' + iu 'org.w3c.dom.smil' + iu 'org.w3c.dom.svg' + } } -} -*/ +} // if (useIde) {} -/* dependencies { - //eclipseDeps.each { compile "p2:${it}:+" } - //implementation 'org.eclipse.platform:org.eclipse.osgi:3.15.0' - //compile 'org.eclipse.platform:org.eclipse.osgi:3.15.0' - //classpath 'biz.aQute.bnd:biz.aQute.bnd.gradle:4.4.0' -} +/* + source.addMaven('org.eclipse.platform:org.eclipse.osgi:3.14.0') + // ... + compile 'eclipseOrbit:org.apache.ant:1.10.5.v20190526-1402' + // ... + compile 'org.osgi:org.osgi.service.component:1.4.0' + // ... */ + jalviewjsIde name: 'net.sf.j2s.core-3.2.4' + jalviewjsIde name: 'com.seeq.eclipse.importprojects-1.4.0' +} -repositories { - jcenter() - mavenCentral() - flatDir { - dirs gradlePluginsDir + + + + + +if (useIde) { + + eclipseMavenCentral { + // TODO: How do I add these to the jalviewjsIde configuration and not the compile configuration? + release goomph_eclipse_repo_version, { + + //def platformCode="cocoa.macosx.x86_64" + //compile 'org.eclipse.swt.'+platformCode + useNativesForRunningPlatform() + compile 'org.eclipse.swt' + + compile 'org.eclipse.ant.core' + compile 'org.eclipse.compare.core' + compile 'org.eclipse.core.commands' + compile 'org.eclipse.core.contenttype' + compile 'org.eclipse.core.jobs' + compile 'org.eclipse.core.expressions' + compile 'org.eclipse.core.filesystem' + compile 'org.eclipse.core.resources' + compile 'org.eclipse.core.runtime' + compile 'org.eclipse.core.variables' + compile 'org.eclipse.equinox.common' + compile 'org.eclipse.equinox.ds' + compile 'org.eclipse.equinox.app' + compile 'org.eclipse.equinox.registry' + compile 'org.eclipse.equinox.preferences' + compile 'org.eclipse.jface' + compile 'org.eclipse.osgi' + compile 'org.eclipse.osgi.services' + compile 'org.eclipse.ui' + compile 'org.eclipse.ui.workbench' + compile 'org.eclipse.team.core' + compile 'org.eclipse.text' + + compile 'org.eclipse.e4.core.commands' + compile 'org.eclipse.e4.core.contexts' + compile 'org.eclipse.e4.core.di' + compile 'org.eclipse.e4.core.di.annotations' + compile 'org.eclipse.e4.core.di.extensions.supplier' + compile 'org.eclipse.e4.core.services' + compile 'org.eclipse.e4.ui.bindings' + compile 'org.eclipse.e4.ui.model.workbench' + compile 'org.eclipse.e4.ui.workbench' + compile 'org.eclipse.e4.ui.workbench.swt' + compile 'org.eclipse.e4.ui.css.core' + compile 'org.eclipse.e4.ui.css.swt' + compile 'org.eclipse.e4.ui.css.swt.theme' + compile 'org.eclipse.e4.ui.services' + compile 'org.eclipse.e4.ui.di' + + //compile 'org.eclipse.e4.core.di.internal.extensions' + + // org.eclipse.update.configurator deliberately kept at 3.3.400 see https://github.com/diffplug/goomph/issues/69 + // this module downloaded in equinoxLaunch configuration (to specify version) + //compile 'org.eclipse.update.configurator' + + + } } -} + +} // if (useIde) {} + + + + + + + + + + mainClassName = launcherClass def classes = "$jalviewDir/$classesDir" // configure classpath/args for j8/j11 compilation -def jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath() def libDir def libDistDir def compile_source_compatibility @@ -144,6 +254,7 @@ if (JAVA_VERSION.equals("1.8")) { throw new GradleException("JAVA_VERSION=$JAVA_VERSION not currently supported by Jalview") } + sourceSets { main { @@ -192,7 +303,7 @@ eclipse { HashMap addedSrcPath = new HashMap<>(); cp.entries.each { entry -> if (entry.kind == 'src') { - if (addedSrcPath.getAt(entry.path) || !(entry.path == "src" || entry.path == "test")) { + if (addedSrcPath.getAt(entry.path) || !(entry.path == sourceDir || entry.path == "test")) { removeTheseToo += entry } else { addedSrcPath.putAt(entry.path, true) @@ -304,63 +415,143 @@ clean { +def eclipseWorkspace +task jalviewjsSetEclipseWorkspace { + def eclipseWsDir = useIde?goomph_workspace:jalviewjs_eclipse_workspace + eclipseWorkspace = file(eclipseWsDir) + if (!eclipseWorkspace.exists()) { + eclipseWorkspace = file("${buildDir}/tmp/eclipse-workspace") + //eclipseWorkspace.deleteOnExit() + } else if (useIde) { + com.diffplug.gradle.GoomphCacheLocations.override_workspaces = file(eclipseWorkspace.getAbsolutePath()) + eclipseWorkspace = oomphIde.workspaceRegistry.workspaceDir(project, file(oomphIde.ideDir)) + } + println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath()) +} +if (useIde) { -GoomphCacheLocations.override_workspaces = file(jalviewDirAbsolutePath+"/"+goomph_workspace) -oomphIde { - repoEclipse goomph_eclipse_version - jdt { - /* - installedJre { + oomphIde { + repoEclipse goomph_eclipse_version + jdt { + /* + installedJre { //markDefault = true //executionEnvironments = [ eclipse.jdt.javaRuntimeName ] + } + */ + //compilerComplianceLevel( JAVA_INTEGER_VERSION ) } - */ - //compilerComplianceLevel( JAVA_INTEGER_VERSION ) - } - //repo 'http://download.eclipse.org/buildship/updates/e45/milestones/3.x/' - repo goomph_repo_buildship - feature goomph_feature_buildship -} -equinoxLaunch { - headlessAppSetup { + repo "https://download.eclipse.org/releases/${goomph_eclipse_version_name}/" + feature goomph_eclipse_jee_feature, goomph_eclipse_jee_version + + thirdParty { + buildship { + repo goomph_repo_buildship + feature goomph_feature_buildship + } - launchTask 'ideJalviewjsBuild', { - //it.args = ["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", tempEclipseWorkspace, "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ] - it.args = ["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ] } - } -} -task ideCopyDropins (type: Copy) { - dependsOn ideSetupP2 + workspaceProp '.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs', { + it.put('org.eclipse.jdt.launching.PREF_VM_XML', goomph_PREF_VM_XML) + } - def inputFiles = fileTree(jalviewjs_utils_dir+"/"+jalviewjs_eclipse_dropins_dir) - def outputDir = oomphIde.ideDir + "/" + com.diffplug.gradle.FileMisc.macContentsEclipse() + "/dropins" - from inputFiles - into outputDir - def outputFiles = [] - rename { filename -> - outputFiles += outputDir+"/"+filename - println("COPYING ${filename} to ${outputFiles}") - null + // CLI ARGS HERE! } - outputs.files outputFiles - inputs.files inputFiles -} + equinoxLaunch { + ideJalviewjsBuildSetup { + + source.addConfiguration(configurations.compile) + source.addConfiguration(configurations.jalviewjsIde) + + source.addMaven('eclipseOrbit:org.apache.ant:1.10.5.v20190526-1402') + source.addMaven('eclipseOrbit:javax.servlet:3.1.0.v201410161800') + source.addMaven('eclipseOrbit:javax.servlet.jsp:2.2.0.v201112011158') + source.addMaven('eclipseOrbit:javax.el:2.2.0.v201303151357') + source.addMaven('eclipseOrbit:org.apache.batik.constants:1.11.0.v20190515-0436') + source.addMaven('eclipseOrbit:org.apache.batik.css:1.11.0.v20190515-0436') + source.addMaven('eclipseOrbit:org.apache.batik.i18n:1.11.0.v20190515-0436') + source.addMaven('eclipseOrbit:org.apache.batik.util:1.11.0.v20190515-0436') + source.addMaven('eclipseOrbit:org.apache.commons.beanutils:1.8.0.v201205091237') + source.addMaven('eclipseOrbit:org.apache.commons.collections:3.2.2.v201511171945') + source.addMaven('eclipseOrbit:org.apache.xmlgraphics:2.3.0.v20190515-0436') + source.addMaven('eclipseOrbit:org.apache.commons.jxpath:1.3.0.v200911051830') + source.addMaven('eclipseOrbit:org.apache.commons.io:2.6.0.v20190123-2029') + source.addMaven('eclipseOrbit:org.apache.commons.logging:1.2.0.v20180409-1502') + source.addMaven('eclipseOrbit:org.jdom:1.1.1.v201101151400') + source.addMaven('eclipseOrbit:org.w3c.dom.svg:1.1.0.v201011041433') + source.addMaven('eclipseOrbit:org.w3c.dom.smil:1.0.1.v200903091627') + source.addMaven('eclipseOrbit:org.w3c.dom.events:3.0.0.draft20060413_v201105210656') + + source.addMaven('org.eclipse.birt.runtime:com.ibm.icu:56.1.0.v201601250100') + source.addMaven('javax.inject:com.springsource.javax.inject:1.0.0') + source.addMaven('org.apache.felix:org.apache.felix.scr:2.1.16') + source.addMaven('org.osgi:org.osgi.framework:1.9.0') + source.addMaven('org.osgi:org.osgi.service.component:1.4.0') + source.addMaven('org.osgi:org.osgi.service.event:1.4.0') + source.addMaven('org.osgi:org.osgi.util.promise:1.1.1') + source.addMaven('org.osgi:org.osgi.util.function:1.1.0') + + source.addMaven('ecjDeps:org.eclipse.debug.core:3.14.0.v20190812-1404') + source.addMaven('ecjDeps:org.eclipse.jdt.annotation:2.2.300.v20190328-1431') + source.addMaven('ecjDeps:org.eclipse.jdt.apt.core:3.6.500.v20190703-0914') + source.addMaven('ecjDeps:org.eclipse.jdt.core:3.19.0.v20190903-0936') + source.addMaven('ecjDeps:org.eclipse.jdt.apt.pluggable.core:1.2.400.v20190626-1334') + //source.addMaven('ecjDeps:org.eclipse.jdt.apt.ui:3.6.300.v20190727-1243') + source.addMaven('ecjDeps:org.eclipse.jdt.compiler.apt:1.3.700.v20190704-1731') + source.addMaven('ecjDeps:org.eclipse.jdt.compiler.tool:1.2.600.v20190322-0450') + //source.addMaven('ecjDeps:org.eclipse.jdt.core.manipulation:1.12.100.v20190904-0645') + source.addMaven('ecjDeps:org.eclipse.jdt.debug:3.13.100.v20190902-1050') + //source.addMaven('ecjDeps:org.eclipse.jdt.debug.ui:3.10.400.v20190815-2202') + source.addMaven('ecjDeps:org.eclipse.jdt.doc.user:3.15.400.v20190904-0724') + //source.addMaven('ecjDeps:org.eclipse.jdt.junit:3.11.500.v20190809-1613') + //source.addMaven('ecjDeps:org.eclipse.jdt.junit.core:3.10.400.v20190625-1910') + //source.addMaven('ecjDeps:org.eclipse.jdt.junit4.runtime:1.1.1000.v20190510-0840') + //source.addMaven('ecjDeps:org.eclipse.jdt.junit4.runtime:1.1.1000.v20190510-0840') + //source.addMaven('ecjDeps:org.eclipse.jdt.junit5.runtime:1.0.600.v20190610-0439') + source.addMaven('ecjDeps:org.eclipse.jdt.launching:3.15.0.v20190826-1639') + //source.addMaven('ecjDeps:org.eclipse.jdt.ui:3.19.0.v20190827-1733') + + //source.addMaven('ecjDeps:org.eclipse.jdt.launching.macosx:3.4.300.v20190510-0639') + //source.addMaven('ecjDeps:org.eclipse.jdt.launching.ui.macosx:1.2.300.v20190510-0639') + + // org.eclipse.update.configurator deliberately kept at 3.3.400 see https://github.com/diffplug/goomph/issues/69 + source.addMaven('org.eclipse.platform:org.eclipse.update.configurator:3.3.400') + + + launchTask 'ideJalviewjsImport', { + it.args = ["-consoleLog", "-nosplash", "--launcher.suppressErrors", "-application", "com.seeq.eclipse.importprojects.headlessimport", "-data", eclipseWorkspace.getPath(), "-import", jalviewDirAbsolutePath ] + } -ide.dependsOn eclipseProject -ide.dependsOn eclipseClasspath -ide.dependsOn eclipseJdt -ide.dependsOn ideCopyDropins -ideJalviewjsBuild.dependsOn ideSetupWorkspace -ideJalviewjsBuild.dependsOn ideCopyDropins + launchTask 'ideJalviewjsBuild', { + oomphIde.workspaceProp '.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs', { + it.put('org.eclipse.jdt.launching.PREF_VM_XML', goomph_PREF_VM_XML) + } + + def args = ["-consoleLog", "-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", eclipseWorkspace.getPath(), "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ] + println("ARGS="+args) + + it.args = args + } + } + } + + ideSetupWorkspace.dependsOn jalviewjsSetEclipseWorkspace + ideSetupWorkspace.outputs.upToDateWhen {file(eclipseWorkspace).exists()} + + task ideSetup { + dependsOn ideSetupP2 + dependsOn ideSetupWorkspace + } + +} // if (useIde) {} @@ -386,15 +577,6 @@ task jalviewjsSitePath { } } -def tempEclipseWorkspace -task jalviewjsSetTempEclipseWorkspace { - tempEclipseWorkspace = file(jalviewjs_eclipse_workspace) - if (!tempEclipseWorkspace.exists()) { - tempEclipseWorkspace = file("${buildDir}/tmp/eclipse-workspace") - //tempEclipseWorkspace.deleteOnExit() - } - println("ECLIPSE WORKSPACE: "+tempEclipseWorkspace.getPath()) -} task jalviewjsUnzipFiles { dependsOn jalviewjsSitePath @@ -418,42 +600,54 @@ task jalviewjsUnzipFiles { def eclipseDropinsDir def eclipseBinary task jalviewjsEclipsePaths { - def eclipseRoot = jalviewjs_eclipse_root - if (eclipseRoot.startsWith("~")) { - eclipseRoot = System.getProperty("user.home") + eclipseRoot.substring(1) + def eclipseRoot + if (useIde) { + eclipseRoot = oomphIde.ideDir + eclipseDropinsDir = eclipseRoot+"/"+com.diffplug.gradle.FileMisc.macContentsEclipse()+"/dropins" + eclipseBinary = eclipseRoot+"/"+com.diffplug.common.swt.os.OS.getNative().winMacLinux("", "Contents/MacOS", "")+"/eclipse" + } else { + eclipseRoot = jalviewjs_eclipse_root + if (eclipseRoot.startsWith("~")) { + eclipseRoot = System.getProperty("user.home") + eclipseRoot.substring(1) + } + if (OperatingSystem.current().isMacOsX()) { + eclipseRoot += "/Eclipse.app" + eclipseDropinsDir = eclipseRoot+"/Contents/Eclipse/dropins" + eclipseBinary = eclipseRoot+"/Contents/MacOS/eclipse" + } else if (OperatingSystem.current().isWindows()) { // check these paths!! + eclipseDropinsDir = eclipseRoot+"/dropins" + eclipseBinary = eclipseRoot+"/eclipse" + } else { // linux or unix + eclipseDropinsDir = eclipseRoot+"/dropins" + eclipseBinary = eclipseRoot+"/eclipse" + } } - if (OperatingSystem.current().isMacOsX()) { - eclipseRoot += "/Eclipse.app" - eclipseDropinsDir = eclipseRoot+"/Contents/Eclipse/dropins" - eclipseBinary = eclipseRoot+"/Contents/MacOS/eclipse" - } else if (OperatingSystem.current().isWindows()) { // check these paths!! - eclipseDropinsDir = eclipseRoot+"/dropins" - eclipseBinary = eclipseRoot+"/eclipse" - } else { // linux or unix - eclipseDropinsDir = eclipseRoot+"/dropins" - eclipseBinary = eclipseRoot+"/eclipse" - } } -task jalviewjsEclipseCopyDropins (type: Copy) { +task jalviewjsEclipseCopyDropins { dependsOn jalviewjsEclipsePaths - def inputFiles = fileTree(jalviewjs_utils_dir+"/"+jalviewjs_eclipse_dropins_dir) + def inputFiles = fileTree(dir: jalviewjs_utils_dir+"/"+jalviewjs_eclipse_dropins_dir, include: "*.jar") def outputDir = eclipseDropinsDir - from inputFiles - into outputDir - def outputFiles = [] - rename { filename -> - outputFiles += outputDir+"/"+filename - null - } - outputs.files outputFiles inputs.files inputFiles + inputFiles.each { file -> + outputs.file(outputDir+"/"+file.name) + } + + doLast { + def outputFiles = [] + inputFiles.each { file -> + copy { + from file + into outputDir + } + } + } } task jalviewjsEclipseSetup { dependsOn jalviewjsEclipseCopyDropins - dependsOn jalviewjsSetTempEclipseWorkspace + dependsOn jalviewjsSetEclipseWorkspace } @@ -514,12 +708,10 @@ task jalviewjsCopySiteResources (type: Copy) { task cleanJalviewjs { dependsOn jalviewjsSitePath - /* delete jalviewDir+"/"+jalviewjsSiteDir - delete jalviewDir+"/"+eclipse_bin_dir - delete file(tempEclipseWorkspace.getAbsolutePath()+"/.metadata") - delete jalviewDir+"/"+jalviewjs_j2s_settings - */ + //delete jalviewDir+"/"+eclipse_bin_dir + //delete file(eclipseWorkspace.getAbsolutePath()+"/.metadata") + //delete jalviewDir+"/"+jalviewjs_j2s_settings } task jalviewjsProjectImport(type: Exec) { @@ -530,9 +722,9 @@ task jalviewjsProjectImport(type: Exec) { dependsOn jalviewjsEclipsePaths dependsOn jalviewjsEclipseSetup executable(eclipseBinary) - args(["-nosplash", "--launcher.suppressErrors", "-application", "com.seeq.eclipse.importprojects.headlessimport", "-data", tempEclipseWorkspace.getPath(), "-import", jalviewDirAbsolutePath]) + args(["-nosplash", "--launcher.suppressErrors", "-application", "com.seeq.eclipse.importprojects.headlessimport", "-data", eclipseWorkspace.getPath(), "-import", jalviewDirAbsolutePath]) - def projdir = tempEclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core" + def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core" inputs.file(jalviewDir+"/.project") outputs.dir(projdir) outputs.upToDateWhen { file(projdir).exists() } @@ -550,7 +742,7 @@ task jalviewjsTranspile(type: Exec) { dependsOn jalviewjsProjectImport dependsOn jalviewjsEclipsePaths executable(eclipseBinary) - args(["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", tempEclipseWorkspace, "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ]) + args(["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", eclipseWorkspace, "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ]) def stdout def stderr @@ -563,15 +755,25 @@ task jalviewjsTranspile(type: Exec) { doLast { if (stdout.toString().contains("Error processing ")) { // j2s did not complete transpile - throw new TaskExecutionException("Error during transpilation:\n${stderr}\n") + throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log files '${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}' and '${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}'\n") } } inputs.dir(sourceDir) outputs.dir(eclipse_bin_dir+"/main") - outputs.dir(jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir) + outputs.files( + fileTree( + dir: jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir, + includes: [ "**/*.js" ], + excludes: [ + //jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir+"/intervalstore/**", + //jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir+"/org/json/**", + "intervalstore/**", + "org/json/**", + ] + ).files + ) outputs.file(jalviewjsSiteDir+jalviewjs_server_resource) - outputs.upToDateWhen { file(jalviewjsSiteDir+jalviewjs_server_resource).exists() } } @@ -580,19 +782,31 @@ task jalviewjsTranspile(type: Exec) { +jalviewjsUnzipFiles.mustRunAfter jalviewjsTranspile +jalviewjsTranspile.mustRunAfter jalviewjsCopyResources +jalviewjsTranspile.mustRunAfter jalviewjsCopySiteResources - -task jalviewjsBuildSite { +task jalviewjsPrepareSite { + group "JalviewJS" + description "Prepares the website folder including unzipping files and copying resources" dependsOn jalviewjsSitePath dependsOn jalviewjsUnzipFiles dependsOn jalviewjsCopyResources dependsOn jalviewjsCopySiteResources +} + +task jalviewjsBuildSite { + group "JalviewJS" + description "Builds the whole website including transpiled code" + dependsOn jalviewjsPrepareSite dependsOn jalviewjsTranspile } task jalviewjsSiteTar(type: Tar) { + group "JalviewJS" + description "Creates a tar.gz file for the website" dependsOn jalviewjsBuildSite - def outputFilename = "site.tar.gz" + def outputFilename = "jalviewjs-site-${JALVIEW_VERSION}.tar.gz" try { archiveFileName = outputFilename } catch (Exception e) { @@ -607,12 +821,10 @@ task jalviewjsSiteTar(type: Tar) { inputs.dir(jalviewjsSiteDir) } -task jalviewjs { - dependsOn jalviewjsBuildSite -} - def jalviewjsServer = null task jalviewjsServerStart { + group "JalviewJS" + description "Starts a webserver on localhost to test the website" dependsOn jalviewjsSitePath doLast { @@ -629,7 +841,7 @@ task jalviewjsServerStart { def doc_root = new File(jalviewDirAbsolutePath +"/"+ jalviewjsSiteDir) jalviewjsServer = factory.start(doc_root, port) running = true - println("SERVER STARTED with document root ${doc_root}.\nGo to "+jalviewjsServer.getResourceUrl(jalviewjs_server_resource)+" . Run gradle jalviewjsServerStop to stop.") + println("SERVER STARTED with document root ${doc_root}.\nGo to "+jalviewjsServer.getResourceUrl(jalviewjs_server_resource)+" . Run gradle --stop to stop (kills all gradle daemons).") //println("Ctrl-c to stop.");java.lang.Thread.sleep(Integer.valueOf(jalviewjs_server_wait)*1000); } catch (Exception e) { port++; @@ -659,11 +871,47 @@ task jalviewjsServerStop { } */ -project.afterEvaluate { - tasks.findByName('ideJalviewjsBuild').dependsOn eclipseProject - tasks.findByName('ideJalviewjsBuild').dependsOn eclipseClasspath - tasks.findByName('ideJalviewjsBuild').dependsOn eclipseJdt +task ideBuildSite { + dependsOn jalviewjsSitePath + dependsOn jalviewjsUnzipFiles + dependsOn jalviewjsCopyResources + dependsOn jalviewjsCopySiteResources + /* see project.afterEvaluate + dependsOn ideJalviewjsBuild + */ +} + + + + +task jalviewjs { + if (useIde) { + dependsOn ideBuildSite + } else { + dependsOn jalviewjsBuildSite + } } +project.afterEvaluate { + + tasks.findByName('eclipse').dependsOn tasks.findByName('jalviewjsCreateJ2sSettings') + + if (useIde) { + tasks.findByName('ideJalviewjsImport').dependsOn eclipseProject + tasks.findByName('ideJalviewjsImport').dependsOn eclipseClasspath + tasks.findByName('ideJalviewjsImport').dependsOn eclipseJdt + tasks.findByName('ideJalviewjsImport').dependsOn jalviewjsSetEclipseWorkspace + + tasks.findByName('ideJalviewjsBuild').dependsOn tasks.findByName('ideJalviewjsImport') + tasks.findByName('ideJalviewjsBuild').dependsOn tasks.findByName('jalviewjsCreateJ2sSettings') + + tasks.findByName('ide').dependsOn eclipseProject + tasks.findByName('ide').dependsOn eclipseClasspath + tasks.findByName('ide').dependsOn eclipseJdt + + ideBuildSite.dependsOn tasks.findByName('ideJalviewjsBuild') + } + +}