JAL-3210 Almost working goomph build
[jalview.git] / build.gradle
index 2392175..f355258 100644 (file)
@@ -5,21 +5,14 @@ import groovy.transform.ExternalizeMethods
 //import org.eclipse.osgi.*
 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'
@@ -27,25 +20,109 @@ plugins {
   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'
 }
 
+
 dependencies {
+    //compile group: 'org.osgi', name: 'org.osgi.service.component', version: '1.4.0'
+/*
+    source.addMaven('org.eclipse.platform:org.eclipse.osgi:3.14.0')
+    source.addMaven('org.eclipse.platform:org.eclipse.equinox.common:3.10.400')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.jobs:3.10.400')
+    source.addMaven('org.eclipse.platform:org.eclipse.update.configurator:3.4.300')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.runtime:3.16.0')
+    source.addMaven('org.eclipse.platform:org.eclipse.equinox.ds:1.6.0')
+    source.addMaven('javax.inject:com.springsource.javax.inject:1.0.0')
+*/
+  //compile 'com.ibm.icu:com.ibm.icu:4.4.2'
 }
 
+def jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath()
+
 repositories {
   jcenter()
   mavenCentral()
+  maven { url "http://maven.icm.edu.pl/artifactory/repo/" }
+  maven { url "http://maven.geomajas.org/" }
+  maven { url "https://repo.spring.io/plugins-release/" }
+  maven { url "${jalviewDirAbsolutePath}/${m2RepoDir}" }
+  mavenLocal()
   flatDir {
     dirs gradlePluginsDir
   }
 }
 
+
+
+
+
+
+
+/*
+p2AsMaven {
+  def requiredBundles = [
+               'org.eclipse.core.commands',
+               'org.eclipse.core.resources',
+               'org.eclipse.core.runtime',
+               'org.eclipse.ui',
+               'org.eclipse.ui.ide',
+               'org.eclipse.jface',
+               'org.eclipse.swt',
+               //"org.eclipse.swt.${com.diffplug.common.swt.os.SwtPlatform.getNative()}",
+               'org.eclipse.equinox.registry',
+               'org.eclipse.equinox.common',
+               'org.eclipse.osgi',
+               'org.eclipse.core.jobs',
+               'org.eclipse.ui.workbench',
+               'org.eclipse.jdt.core',
+               'org.eclipse.jdt.ui',
+               'org.eclipse.text'
+  ]
+
+  group 'eclipse-deps', {
+    repoEclipse '4.12.0'
+    // reduce the number of plugins downloaded
+    slicingOption 'latestVersionOnly', 'true'
+    requiredBundles.each {
+      iu "${it}"
+    }
+    append true
+  }
+}
+*/
+
+/*
+eclipseMavenCentral {
+  release '4.13.0', {
+    compile 'org.eclipse.osgi'
+    compile 'org.eclipse.equinox.common'
+    compile 'org.eclipse.update.configurator'
+    compile 'org.eclipse.core.runtime'
+    compile 'org.eclipse.core.jobs'
+    compile 'org.eclipse.equinox.ds'
+    compile 'org.eclipse.osgi.services'
+    useNativesForRunningPlatform()
+  }
+}
+*/
+
+
+
+
+
+
+
+
+
+
+
+
 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
@@ -102,6 +179,7 @@ if (JAVA_VERSION.equals("1.8")) {
   throw new GradleException("JAVA_VERSION=$JAVA_VERSION not currently supported by Jalview")
 }
 
+
 sourceSets {
 
   main {
@@ -261,11 +339,22 @@ clean {
 
 
 
+def useIde = useGoomph.equals("true")
 
+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) {
+    GoomphCacheLocations.override_workspaces = file(eclipseWorkspace.getAbsolutePath())
+    eclipseWorkspace = oomphIde.workspaceRegistry.workspaceDir(project, file(oomphIde.ideDir))
+  }
+  println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
+}
 
-
-
-GoomphCacheLocations.override_workspaces = file(jalviewDirAbsolutePath+"/"+goomph_workspace)
 oomphIde {
   repoEclipse goomph_eclipse_version
   jdt {
@@ -277,8 +366,12 @@ oomphIde {
     */
     //compilerComplianceLevel( JAVA_INTEGER_VERSION )
   }
+
   repo "https://download.eclipse.org/releases/${goomph_eclipse_version_name}/"
   feature goomph_eclipse_jee_feature, goomph_eclipse_jee_version
+
+  //iu 'org.eclipse.osgi'
+
   thirdParty {
     buildship {
       repo goomph_repo_buildship
@@ -288,22 +381,77 @@ oomphIde {
   }
 
 
+
   // CLI ARGS HERE!
 }
 
 equinoxLaunch {
-  headlessAppSetup {
+  ideJalviewjsBuildSetup {
+    source.addThisProject()
+
+    
+    //source.addMaven('com.ibm.icu:icu4j:65.1')
+    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.ant:ant:1.7.0')
+    source.addMaven('org.apache.ant:org.apache.ant:1.6.5')
+
+    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.util.promise:1.1.1')
+    source.addMaven('org.osgi:org.osgi.util.function:1.1.0')
+
+    source.addMaven('org.eclipse.jdt:org.eclipse.jdt.apt.core:3.6.500')
+    //source.addMaven('org.eclipse.jdt:org.eclipse.jdt.apt.ui:3.6.300')
+    //source.addMaven('org.eclipse.jdt:org.eclipse.jdt.compiler.apt:1.3.700')
+    source.addMaven('org.eclipse.jdt:org.eclipse.jdt.core:3.19.0')
+
+    source.addMaven('org.eclipse.platform:org.eclipse.ant.core:3.5.500')
+    source.addMaven('org.eclipse.platform:org.eclipse.compare.core:3.6.600')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.commands:3.9.500')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.contenttype:3.7.400')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.jobs:3.10.500')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.expressions:3.6.500')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.filesystem:1.7.500')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.resources:3.13.500')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.runtime:3.16.0')
+    source.addMaven('org.eclipse.platform:org.eclipse.core.variables:3.4.600')
+    source.addMaven('org.eclipse.platform:org.eclipse.equinox.common:3.10.500')
+    source.addMaven('org.eclipse.platform:org.eclipse.equinox.ds:1.6.0')
+    source.addMaven('org.eclipse.platform:org.eclipse.equinox.app:1.4.300')
+    source.addMaven('org.eclipse.platform:org.eclipse.equinox.registry:3.8.500')
+    source.addMaven('org.eclipse.platform:org.eclipse.equinox.preferences:3.7.500')
+    source.addMaven('org.eclipse.platform:org.eclipse.osgi:3.14.0')
+    source.addMaven('org.eclipse.platform:org.eclipse.team.core:3.8.700')
+    source.addMaven('org.eclipse.platform:org.eclipse.text:3.9.0')
+    source.addMaven('org.eclipse.platform:org.eclipse.update.configurator:3.3.400')
+    /*
+    source.addMaven('org.eclipse.platform:org.eclipse.:3.')
+    source.addMaven('org.eclipse.platform:org.eclipse.:3.')
+    source.addMaven('org.eclipse.platform:org.eclipse.:3.')
+    source.addMaven('org.eclipse.platform:org.eclipse.:3.')
+    source.addMaven('org.eclipse.platform:org.eclipse.:3.')
+    */
+
+
+
 
     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 ]
+      //it.args = ["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", eclipseWorkspace, "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ]
+      //it.args = ["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ]
+      it.args = ["-consoleLog", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ]
+      //it.vmArgs = ['-Dosgi.bundles=org.eclipse.core.jobs@2:start,org.eclipse.equinox.common@3:start,org.eclipse.core.runtime@2:start']
+      //it.vmArgs = ['-Dequinox.use.ds=false']
+
     }
   }
 }
 
-task testIde(type: Exec) {
-}
-
+/*
 task ideCopyDropins (type: Copy) {
   dependsOn ideSetupP2
 
@@ -322,7 +470,15 @@ task ideCopyDropins (type: Copy) {
   inputs.files inputFiles
 
 }
+*/
 
+ideSetupWorkspace.dependsOn jalviewjsSetEclipseWorkspace
+ideSetupWorkspace.outputs.upToDateWhen {file(eclipseWorkspace).exists()}
+
+task ideSetup {
+  dependsOn ideSetupP2
+  dependsOn ideSetupWorkspace
+}
 
 
 
@@ -350,15 +506,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
@@ -382,42 +529,57 @@ 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"
-       }
+  //println("ECLIPSE_ROOT=${eclipseRoot}")
+  //println("ECLIPSE_BINARY=${eclipseBinary}")
 }
 
-task jalviewjsEclipseCopyDropins (type: Copy) {
+//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
 }
 
 
@@ -481,7 +643,7 @@ task cleanJalviewjs {
   /*
   delete jalviewDir+"/"+jalviewjsSiteDir
   delete jalviewDir+"/"+eclipse_bin_dir
-  delete file(tempEclipseWorkspace.getAbsolutePath()+"/.metadata")
+  delete file(eclipseWorkspace.getAbsolutePath()+"/.metadata")
   delete jalviewDir+"/"+jalviewjs_j2s_settings
   */
 }
@@ -494,9 +656,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() }
@@ -514,7 +676,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
@@ -631,17 +793,12 @@ task jalviewjsServerStop {
 }
 */
 
-task ideSetup {
-  dependsOn ideSetupP2
-  dependsOn ideCopyDropins
-}
-
 task ideBuildSite {
   dependsOn jalviewjsSitePath
   dependsOn jalviewjsUnzipFiles
   dependsOn jalviewjsCopyResources
   dependsOn jalviewjsCopySiteResources
-  dependsOn ideCopyDropins
+  dependsOn ideSetup
   dependsOn ide
 }
 
@@ -657,6 +814,7 @@ project.afterEvaluate {
   tasks.findByName('ideJalviewjsBuild').dependsOn eclipseProject
   tasks.findByName('ideJalviewjsBuild').dependsOn eclipseClasspath
   tasks.findByName('ideJalviewjsBuild').dependsOn eclipseJdt
+  //tasks.findByName('ideJalviewjsBuild').dependsOn ideSetup
 
   tasks.findByName('ide').dependsOn eclipseProject
   tasks.findByName('ide').dependsOn eclipseClasspath