1 import org.apache.tools.ant.filters.ReplaceTokens
2 import org.gradle.internal.os.OperatingSystem
3 import org.gradle.plugins.ide.eclipse.model.*
4 import groovy.transform.ExternalizeMethods
5 import com.diffplug.gradle.GoomphCacheLocations
21 id 'com.diffplug.gradle.oomph.ide' version '3.18.1'
22 id 'com.diffplug.gradle.equinoxlaunch' version '3.18.1'
23 id 'com.diffplug.gradle.eclipse.mavencentral' version '3.18.1'
24 id 'com.diffplug.gradle.p2.asmaven' version '3.18.1'
27 def jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath()
32 //maven { url "http://maven.icm.edu.pl/artifactory/repo/" }
33 //maven { url "http://maven.geomajas.org/" }
34 //maven { url "https://repo.spring.io/plugins-release/" }
35 //maven { url "http://maven.thingml.org/thirdparty/" }
36 //maven { url "${jalviewDirAbsolutePath}/${m2RepoDir}" }
48 group 'eclipseDeps', {
49 repoEclipse goomph_eclipse_repo_version
50 slicingOption 'latestVersionOnly', 'true'
51 iu 'org.eclipse.update.configurator'
53 group 'eclipseOrbit', {
54 repo goomph_orbit_repo
55 slicingOption 'latestVersionOnly', 'true'
57 iu 'org.apache.batik.css'
58 iu 'org.apache.commons.jxpath'
64 //compile group: 'org.osgi', name: 'org.osgi.service.component', version: '1.4.0'
66 source.addMaven('org.eclipse.platform:org.eclipse.osgi:3.14.0')
67 source.addMaven('org.eclipse.platform:org.eclipse.equinox.common:3.10.400')
68 source.addMaven('org.eclipse.platform:org.eclipse.core.jobs:3.10.400')
69 source.addMaven('org.eclipse.platform:org.eclipse.update.configurator:3.4.300')
70 source.addMaven('org.eclipse.platform:org.eclipse.core.runtime:3.16.0')
71 source.addMaven('org.eclipse.platform:org.eclipse.equinox.ds:1.6.0')
72 source.addMaven('javax.inject:com.springsource.javax.inject:1.0.0')
75 //compile 'eclipseOrbit:org.apache.ant:1.10.5.v20190526-1402'
76 //compile 'eclipseOrbit:javax.servlet:3.1.0.v201410161800'
77 //compile 'eclipseDeps:net.sf.j2s.core:3.2.4'
78 //compile 'eclipseDeps:com.seeq.eclipse.importprojects:1.4.0'
80 //compile 'eclipseDeps:org.eclipse.update.configurator:3.3.400'
91 release goomph_eclipse_repo_version, {
93 //def platformCode="cocoa.macosx.x86_64"
94 //compile 'org.eclipse.swt.'+platformCode
95 useNativesForRunningPlatform()
96 compile 'org.eclipse.swt'
98 compile 'org.eclipse.ant.core'
99 compile 'org.eclipse.compare.core'
100 compile 'org.eclipse.core.commands'
101 compile 'org.eclipse.core.contenttype'
102 compile 'org.eclipse.core.jobs'
103 compile 'org.eclipse.core.expressions'
104 compile 'org.eclipse.core.filesystem'
105 compile 'org.eclipse.core.resources'
106 compile 'org.eclipse.core.runtime'
107 compile 'org.eclipse.core.variables'
108 compile 'org.eclipse.e4.core.commands'
109 compile 'org.eclipse.e4.core.contexts'
110 compile 'org.eclipse.e4.core.di'
111 compile 'org.eclipse.e4.core.di.annotations'
112 compile 'org.eclipse.e4.core.services'
113 compile 'org.eclipse.equinox.common'
114 compile 'org.eclipse.equinox.ds'
115 compile 'org.eclipse.equinox.app'
116 compile 'org.eclipse.equinox.registry'
117 compile 'org.eclipse.equinox.preferences'
118 compile 'org.eclipse.jface'
119 compile 'org.eclipse.osgi'
120 compile 'org.eclipse.osgi.services'
121 compile 'org.eclipse.ui'
122 compile 'org.eclipse.ui.workbench'
123 compile 'org.eclipse.team.core'
124 compile 'org.eclipse.text'
126 compile 'org.eclipse.e4.ui.bindings'
127 compile 'org.eclipse.e4.ui.model.workbench'
128 compile 'org.eclipse.e4.ui.workbench'
129 compile 'org.eclipse.e4.ui.workbench.swt'
130 compile 'org.eclipse.e4.ui.css.core'
131 compile 'org.eclipse.e4.ui.css.swt'
132 compile 'org.eclipse.e4.ui.services'
133 compile 'org.eclipse.e4.ui.di'
135 // org.eclipse.update.configurator deliberately kept at 3.3.400 see https://github.com/diffplug/goomph/issues/69
136 //compile 'org.eclipse.update.configurator'
152 mainClassName = launcherClass
153 def classes = "$jalviewDir/$classesDir"
155 // configure classpath/args for j8/j11 compilation
159 def compile_source_compatibility
160 def compile_target_compatibility
163 buildProperties = jalviewDir + "/" + classesDir +"/" + buildPropertiesFile
171 def JAVA_INTEGER_VERSION
172 //def additional_compiler_args = []
173 // this property is for the Java library used in eclipse
174 def eclipse_java_runtime_name
175 if (JAVA_VERSION.equals("1.8")) {
176 JAVA_INTEGER_VERSION = "8"
179 libDistDir = j8libDir
180 compile_source_compatibility = 1.8
181 compile_target_compatibility = 1.8
182 eclipse_java_runtime_name = "JavaSE-1.8"
183 } else if (JAVA_VERSION.equals("11")) {
184 JAVA_INTEGER_VERSION = "11"
186 libDistDir = j11libDir
187 compile_source_compatibility = 11
188 compile_target_compatibility = 11
189 eclipse_java_runtime_name = "JavaSE-11"
190 /* compile without modules -- using classpath libraries
191 additional_compiler_args += [
192 '--module-path', ext.modules_compileClasspath.asPath,
193 '--add-modules', j11modules
196 } else if (JAVA_VERSION.equals("12") || JAVA_VERSION.equals("13")) {
197 JAVA_INTEGER_VERSION = JAVA_VERSION
199 libDistDir = j11libDir
200 compile_source_compatibility = JAVA_VERSION
201 compile_target_compatibility = JAVA_VERSION
202 eclipse_java_runtime_name = "JavaSE-11"
203 /* compile without modules -- using classpath libraries
204 additional_compiler_args += [
205 '--module-path', ext.modules_compileClasspath.asPath,
206 '--add-modules', j11modules
210 throw new GradleException("JAVA_VERSION=$JAVA_VERSION not currently supported by Jalview")
218 srcDirs "$jalviewDir/$sourceDir"
219 outputDir = file("$classes")
223 srcDirs "$jalviewDir/$resourceDir"
226 compileClasspath = files(sourceSets.main.java.outputDir)
227 compileClasspath += fileTree(dir: "$jalviewDir/$libDir", include: ["*.jar"])
229 runtimeClasspath = compileClasspath
236 name = eclipse_project_name
238 natures 'org.eclipse.jdt.core.javanature',
239 'org.eclipse.buildship.core.gradleprojectnature'
241 buildCommand 'org.eclipse.jdt.core.javabuilder'
242 buildCommand 'org.eclipse.buildship.core.gradleprojectbuilder'
246 //defaultOutputDir = sourceSets.main.java.outputDir
248 configurations.each{ if (it.isCanBeResolved()) {
253 minusConfigurations += removeThese
254 plusConfigurations = [ ]
258 def removeTheseToo = []
259 HashMap<String, Boolean> addedSrcPath = new HashMap<>();
260 cp.entries.each { entry ->
261 if (entry.kind == 'src') {
262 if (addedSrcPath.getAt(entry.path) || !(entry.path == "src" || entry.path == "test")) {
263 removeTheseToo += entry
265 addedSrcPath.putAt(entry.path, true)
269 cp.entries.removeAll(removeTheseToo)
271 if (file(eclipse_bin_dir+"/main").isDirectory()) {
272 cp.entries += new Output(eclipse_bin_dir+"/main")
274 if (file(helpParentDir).isDirectory()) {
275 cp.entries += new Library(fileReference(helpParentDir))
277 if (file(resourceDir).isDirectory()) {
278 cp.entries += new Library(fileReference(resourceDir))
281 HashMap<String, Boolean> addedLibPath = new HashMap<>();
283 // changing from sourcesets.main.classpath to specific Java version lib
284 //sourceSets.main.compileClasspath.each{
285 fileTree("$jalviewDir/$libDistDir").include("**/*.jar").include("*.jar").each {
286 //don't want to add outputDir as eclipse is using its own output dir in bin/main
287 if (it.isDirectory() || ! it.exists()) {
288 // don't add dirs to classpath
291 def itPath = it.toString()
292 if (itPath.startsWith(jalviewDirAbsolutePath+"/")) {
293 itPath = itPath.substring(jalviewDirAbsolutePath.length()+1)
295 if (addedLibPath.get(itPath)) {
296 //println("Not adding duplicate entry "+itPath)
298 //println("Adding entry "+itPath)
299 cp.entries += new Library(fileReference(itPath))
300 addedLibPath.put(itPath, true)
307 containers 'org.eclipse.buildship.core.gradleclasspathcontainer'
311 // for the IDE, use java 11 compatibility
312 sourceCompatibility = compile_source_compatibility
313 targetCompatibility = compile_target_compatibility
314 javaRuntimeName = eclipse_java_runtime_name
318 withProperties { props ->
319 def jalview_prefs = new Properties()
320 def ins = new FileInputStream(jalviewDirAbsolutePath+"/"+eclipse_extra_jdt_prefs_file)
321 jalview_prefs.load(ins)
323 jalview_prefs.forEach { t, v ->
324 if (props.getAt(t) == null) {
333 //synchronizationTasks eclipseClasspath
334 //autoBuildTasks eclipseClasspath
341 sourceCompatibility = compile_source_compatibility
342 targetCompatibility = compile_target_compatibility
343 //options.compilerArgs = additional_compiler_args
344 print ("Setting target compatibility to "+targetCompatibility+"\n")
350 delete sourceSets.main.java.outputDir
373 def useIde = useGoomph.equals("true")
376 task jalviewjsSetEclipseWorkspace {
377 def eclipseWsDir = useIde?goomph_workspace:jalviewjs_eclipse_workspace
378 eclipseWorkspace = file(eclipseWsDir)
379 if (!eclipseWorkspace.exists()) {
380 eclipseWorkspace = file("${buildDir}/tmp/eclipse-workspace")
381 //eclipseWorkspace.deleteOnExit()
383 GoomphCacheLocations.override_workspaces = file(eclipseWorkspace.getAbsolutePath())
384 eclipseWorkspace = oomphIde.workspaceRegistry.workspaceDir(project, file(oomphIde.ideDir))
386 println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
390 repoEclipse goomph_eclipse_version
395 //executionEnvironments = [ eclipse.jdt.javaRuntimeName ]
398 //compilerComplianceLevel( JAVA_INTEGER_VERSION )
401 repo "https://download.eclipse.org/releases/${goomph_eclipse_version_name}/"
402 feature goomph_eclipse_jee_feature, goomph_eclipse_jee_version
404 //iu 'org.eclipse.osgi'
408 repo goomph_repo_buildship
409 feature goomph_feature_buildship
420 ideJalviewjsBuildSetup {
422 source.addConfiguration(configurations.compile)
424 source.addMaven('eclipseOrbit:org.apache.ant:1.10.5.v20190526-1402')
425 source.addMaven('eclipseOrbit:javax.servlet:3.1.0.v201410161800')
427 source.addMaven('org.eclipse.birt.runtime:com.ibm.icu:56.1.0.v201601250100')
428 source.addMaven('javax.inject:com.springsource.javax.inject:1.0.0')
430 //source.addMaven('eclipse-deps:org.apache.ant:1.10.5')
432 source.addMaven('org.apache.felix:org.apache.felix.scr:2.1.16')
434 source.addMaven('org.osgi:org.osgi.framework:1.9.0')
435 source.addMaven('org.osgi:org.osgi.service.component:1.4.0')
436 source.addMaven('org.osgi:org.osgi.service.event:1.4.0')
437 source.addMaven('org.osgi:org.osgi.util.promise:1.1.1')
438 source.addMaven('org.osgi:org.osgi.util.function:1.1.0')
440 //### TRY AND FIND A HEADLESS BUILD WITHOUT org.eclipse.jdt.apt.core
441 source.addMaven('org.eclipse.jdt:org.eclipse.jdt.apt.core:3.6.500')
442 source.addMaven('org.eclipse.jdt:org.eclipse.jdt.core:3.19.0')
444 source.addMaven('org.eclipse.platform:org.eclipse.update.configurator:3.3.400')
446 //source.addMaven('org.eclipse.e4.ui.internal.workbench.swt')
448 source.addMaven('org.eclipse.platform:org.eclipse.ant.core:3.5.500')
449 source.addMaven('org.eclipse.platform:org.eclipse.compare.core:3.6.600')
450 source.addMaven('org.eclipse.platform:org.eclipse.core.commands:3.9.500')
451 source.addMaven('org.eclipse.platform:org.eclipse.core.contenttype:3.7.400')
452 source.addMaven('org.eclipse.platform:org.eclipse.core.jobs:3.10.500')
453 source.addMaven('org.eclipse.platform:org.eclipse.core.expressions:3.6.500')
454 source.addMaven('org.eclipse.platform:org.eclipse.core.filesystem:1.7.500')
455 source.addMaven('org.eclipse.platform:org.eclipse.core.resources:3.13.500')
456 source.addMaven('org.eclipse.platform:org.eclipse.core.runtime:3.16.0')
457 source.addMaven('org.eclipse.platform:org.eclipse.core.variables:3.4.600')
458 //source.addMaven('org.eclipse.platform:org.eclipse.e4.commands:3.10.500')
459 source.addMaven('org.eclipse.platform:org.eclipse.e4.core.commands:0.12.700')
460 source.addMaven('org.eclipse.platform:org.eclipse.e4.core.contexts:1.8.200')
461 source.addMaven('org.eclipse.platform:org.eclipse.e4.core.di:1.7.400')
462 source.addMaven('org.eclipse.platform:org.eclipse.e4.core.di.annotations:1.6.400')
463 source.addMaven('org.eclipse.platform:org.eclipse.e4.core.services:2.2.0')
464 source.addMaven('org.eclipse.platform:org.eclipse.e4.ui.workbench:1.10.100')
465 source.addMaven('org.eclipse.platform:org.eclipse.equinox.common:3.10.500')
466 source.addMaven('org.eclipse.platform:org.eclipse.equinox.ds:1.6.0')
467 source.addMaven('org.eclipse.platform:org.eclipse.equinox.app:1.4.300')
468 source.addMaven('org.eclipse.platform:org.eclipse.equinox.registry:3.8.500')
469 source.addMaven('org.eclipse.platform:org.eclipse.equinox.preferences:3.7.500')
470 source.addMaven('org.eclipse.platform:org.eclipse.jface:3.17.0')
471 source.addMaven('org.eclipse.platform:org.eclipse.osgi:3.14.0')
472 source.addMaven('org.eclipse.platform:org.eclipse.swt:3.112.0')
473 source.addMaven('org.eclipse.platform:org.eclipse.ui:3.114.0')
474 source.addMaven('org.eclipse.platform:org.eclipse.ui.workbench:3.116.0')
475 source.addMaven('org.eclipse.platform:org.eclipse.team.core:3.8.700')
476 source.addMaven('org.eclipse.platform:org.eclipse.text:3.9.0')
477 // org.eclipse.update.configurator deliberately kept at 3.3.400 see https://github.com/diffplug/goomph/issues/69
478 source.addMaven('org.eclipse.platform:org.eclipse.update.configurator:3.3.400')
480 source.addMaven('org.eclipse.platform:org.eclipse.e4.ui.bindings:0.12.600')
486 launchTask 'ideJalviewjsBuild', {
487 //it.args = ["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", eclipseWorkspace, "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ]
488 //it.args = ["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ]
489 it.args = ["-consoleLog", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ]
490 //it.vmArgs = ['-Dosgi.bundles=org.eclipse.core.jobs@2:start,org.eclipse.equinox.common@3:start,org.eclipse.core.runtime@2:start']
491 //it.vmArgs = ['-Dequinox.use.ds=false']
498 task ideCopyDropins (type: Copy) {
501 def inputFiles = fileTree(jalviewjs_utils_dir+"/"+jalviewjs_eclipse_dropins_dir)
502 def outputDir = oomphIde.ideDir + "/" + com.diffplug.gradle.FileMisc.macContentsEclipse() + "/dropins"
508 outputFiles += outputDir+"/"+filename
509 println("COPYING ${filename} to ${outputFiles}")
512 outputs.files outputFiles
513 inputs.files inputFiles
518 ideSetupWorkspace.dependsOn jalviewjsSetEclipseWorkspace
519 ideSetupWorkspace.outputs.upToDateWhen {file(eclipseWorkspace).exists()}
523 dependsOn ideSetupWorkspace
540 def jalviewjsBuildDir
542 task jalviewjsSitePath {
543 if (jalviewjs_site_dir.startsWith("/")) {
544 jalviewjsSiteDir = jalviewjs_site_dir
546 def relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath())
547 jalviewjsBuildDir = "${relativeBuildDir}/jalviewjs"
548 jalviewjsSiteDir = jalviewjsBuildDir + "/" + jalviewjs_site_dir
553 task jalviewjsUnzipFiles {
554 dependsOn jalviewjsSitePath
556 def zipFiles = fileTree(dir: jalviewjs_utils_dir+"/"+jalviewjs_libjs_dir).include("*.zip")
557 zipFiles += jalviewjs_utils_dir+"/"+jalviewjs_swingjs_zip
560 zipFiles.each { file_zip ->
562 from zipTree(file_zip)
563 into jalviewjsSiteDir
568 inputs.files zipFiles
569 outputs.dir jalviewjsSiteDir
572 def eclipseDropinsDir
574 task jalviewjsEclipsePaths {
577 eclipseRoot = oomphIde.ideDir
578 eclipseDropinsDir = eclipseRoot+"/"+com.diffplug.gradle.FileMisc.macContentsEclipse()+"/dropins"
579 eclipseBinary = eclipseRoot+"/"+com.diffplug.common.swt.os.OS.getNative().winMacLinux("", "Contents/MacOS", "")+"/eclipse"
581 eclipseRoot = jalviewjs_eclipse_root
582 if (eclipseRoot.startsWith("~")) {
583 eclipseRoot = System.getProperty("user.home") + eclipseRoot.substring(1)
585 if (OperatingSystem.current().isMacOsX()) {
586 eclipseRoot += "/Eclipse.app"
587 eclipseDropinsDir = eclipseRoot+"/Contents/Eclipse/dropins"
588 eclipseBinary = eclipseRoot+"/Contents/MacOS/eclipse"
589 } else if (OperatingSystem.current().isWindows()) { // check these paths!!
590 eclipseDropinsDir = eclipseRoot+"/dropins"
591 eclipseBinary = eclipseRoot+"/eclipse"
592 } else { // linux or unix
593 eclipseDropinsDir = eclipseRoot+"/dropins"
594 eclipseBinary = eclipseRoot+"/eclipse"
597 //println("ECLIPSE_ROOT=${eclipseRoot}")
598 //println("ECLIPSE_BINARY=${eclipseBinary}")
601 //task jalviewjsEclipseCopyDropins (type: Copy) {
602 task jalviewjsEclipseCopyDropins {
603 dependsOn jalviewjsEclipsePaths
604 def inputFiles = fileTree(dir: jalviewjs_utils_dir+"/"+jalviewjs_eclipse_dropins_dir, include: "*.jar")
605 def outputDir = eclipseDropinsDir
607 inputs.files inputFiles
608 inputFiles.each { file ->
609 outputs.file(outputDir+"/"+file.name)
614 inputFiles.each { file ->
623 task jalviewjsEclipseSetup {
624 dependsOn jalviewjsEclipseCopyDropins
625 dependsOn jalviewjsSetEclipseWorkspace
629 task jalviewjsCreateJ2sSettings(type: WriteProperties) {
630 dependsOn jalviewjsSitePath
631 outputFile (jalviewDir+"/"+jalviewjs_j2s_settings)
632 def props = project.properties.sort { it.key }
633 def siteDirProperty = "j2s.site.directory"
634 def setSiteDir = false
635 props.each { prop, val ->
636 if (prop.startsWith("j2s.") && val != null) {
637 if (prop == siteDirProperty) {
638 if (!(val.startsWith("/") || val.startsWith("file://") )) {
639 val = jalviewjsSiteDir+"/"+val
646 property(siteDirProperty,"${jalviewjsSiteDir}")
649 outputs.file(outputFile)
652 task jalviewjsCopyResources (type: Copy) {
653 dependsOn jalviewjsSitePath
654 def inputFiles = fileTree(dir: jalviewjs_resource_dir)
655 def outputDir = jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir
661 outputFiles += outputDir+"/"+filename
664 outputs.files outputFiles
665 inputs.files inputFiles
668 task jalviewjsCopySiteResources (type: Copy) {
669 dependsOn jalviewjsSitePath
670 def inputFiles = fileTree(dir: jalviewjs_utils_dir+"/"+jalviewjs_site_resource_dir)
671 def outputDir = jalviewjsSiteDir
677 outputFiles += outputDir+"/"+filename
680 outputs.files outputFiles
681 inputs.files inputFiles
684 task cleanJalviewjs {
685 dependsOn jalviewjsSitePath
687 delete jalviewDir+"/"+jalviewjsSiteDir
688 delete jalviewDir+"/"+eclipse_bin_dir
689 delete file(eclipseWorkspace.getAbsolutePath()+"/.metadata")
690 delete jalviewDir+"/"+jalviewjs_j2s_settings
694 task jalviewjsProjectImport(type: Exec) {
695 // work out how to do this!
696 dependsOn eclipseProject
697 dependsOn eclipseClasspath
699 dependsOn jalviewjsEclipsePaths
700 dependsOn jalviewjsEclipseSetup
701 executable(eclipseBinary)
702 args(["-nosplash", "--launcher.suppressErrors", "-application", "com.seeq.eclipse.importprojects.headlessimport", "-data", eclipseWorkspace.getPath(), "-import", jalviewDirAbsolutePath])
704 def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core"
705 inputs.file(jalviewDir+"/.project")
707 outputs.upToDateWhen { file(projdir).exists() }
717 task jalviewjsTranspile(type: Exec) {
718 dependsOn jalviewjsCreateJ2sSettings
719 dependsOn jalviewjsProjectImport
720 dependsOn jalviewjsEclipsePaths
721 executable(eclipseBinary)
722 args(["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", eclipseWorkspace, "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ])
727 stdout = new ByteArrayOutputStream()
728 stderr = new ByteArrayOutputStream()
729 standardOutput = new org.apache.tools.ant.util.TeeOutputStream(new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"), stdout);
730 errorOutput = new org.apache.tools.ant.util.TeeOutputStream(new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"), stderr);
733 if (stdout.toString().contains("Error processing ")) {
734 // j2s did not complete transpile
735 throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log files '${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}' and '${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}'\n")
739 inputs.dir(sourceDir)
740 outputs.dir(eclipse_bin_dir+"/main")
743 dir: jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir,
744 includes: [ "**/*.js" ],
746 //jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir+"/intervalstore/**",
747 //jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir+"/org/json/**",
753 outputs.file(jalviewjsSiteDir+jalviewjs_server_resource)
762 jalviewjsUnzipFiles.mustRunAfter jalviewjsTranspile
763 jalviewjsTranspile.mustRunAfter jalviewjsCopyResources
764 jalviewjsTranspile.mustRunAfter jalviewjsCopySiteResources
766 task jalviewjsBuildSite {
767 dependsOn jalviewjsSitePath
768 dependsOn jalviewjsUnzipFiles
769 dependsOn jalviewjsCopyResources
770 dependsOn jalviewjsCopySiteResources
771 dependsOn jalviewjsTranspile
774 task jalviewjsSiteTar(type: Tar) {
775 dependsOn jalviewjsBuildSite
776 def outputFilename = "jalviewjs-site-${JALVIEW_VERSION}.tar.gz"
778 archiveFileName = outputFilename
779 } catch (Exception e) {
780 archiveName = outputFilename
783 compression Compression.GZIP
785 from jalviewjsSiteDir
786 into jalviewjs_site_dir // this is inside the tar file
788 inputs.dir(jalviewjsSiteDir)
791 def jalviewjsServer = null
792 task jalviewjsServerStart {
793 dependsOn jalviewjsSitePath
796 if (jalviewjsServer != null) {
797 println("SERVER ALREADY RUNNING. Go to "+jalviewjsServer.getResourceUrl(jalviewjs_server_resource)+" . Run gradle jalviewjsServerStop to stop.")
800 SimpleHttpFileServerFactory factory = new SimpleHttpFileServerFactory()
801 def port = Integer.valueOf(jalviewjs_server_port)
804 while(port < start+1000 && !running) {
806 def doc_root = new File(jalviewDirAbsolutePath +"/"+ jalviewjsSiteDir)
807 jalviewjsServer = factory.start(doc_root, port)
809 println("SERVER STARTED with document root ${doc_root}.\nGo to "+jalviewjsServer.getResourceUrl(jalviewjs_server_resource)+" . Run gradle --stop to stop (kills all gradle daemons).")
810 //println("Ctrl-c to stop.");java.lang.Thread.sleep(Integer.valueOf(jalviewjs_server_wait)*1000);
811 } catch (Exception e) {
822 /* server persists in gradle daemon but reference is not accessible across builds
823 task jalviewjsServerStop {
826 if (jalviewjsServer != null) {
828 println("SERVER ON PORT "+jalviewjsServer.getPort()+" STOPPING. Run gradle jalviewjsServerStart to start again.")
829 jalviewjsServer.stop()
832 println("SERVER NOT RUNNING. Run gradle jalviewjsServerStart to start.")
840 dependsOn jalviewjsSitePath
841 dependsOn jalviewjsUnzipFiles
842 dependsOn jalviewjsCopyResources
843 dependsOn jalviewjsCopySiteResources
852 dependsOn jalviewjsBuildSite
856 project.afterEvaluate {
857 tasks.findByName('ideJalviewjsBuild').dependsOn eclipseProject
858 tasks.findByName('ideJalviewjsBuild').dependsOn eclipseClasspath
859 tasks.findByName('ideJalviewjsBuild').dependsOn eclipseJdt
860 //tasks.findByName('ideJalviewjsBuild').dependsOn ideSetup
862 tasks.findByName('ide').dependsOn eclipseProject
863 tasks.findByName('ide').dependsOn eclipseClasspath
864 tasks.findByName('ide').dependsOn eclipseJdt