configurations.create('webStartJars') configurations.create('appbundler') dependencies { webStartJars 'cisd:cisd-base:+', 'cisd:cisd-args4j:+', 'cglib:cglib-nodep:+', 'jline:jline:+', 'apache:commons-codec:+', 'apache:commons-io:+', 'apache:commons-httpclient:+', 'apache:commons-lang:+', 'apache:commons-logging:+', 'apache:log4j:+', 'apache:geronimo-stax:+', 'apache:poi:+', 'apache:poi-ooxml:+', 'apache:poi-ooxml-schemas:+', 'apache:xmlbeans:+', 'dom4j:dom4j:+', 'imagej:ij:+', 'python:jython:+', 'sybit:image-viewer:+', 'springframework:spring:+', 'springframework:spring-aop:+', 'springframework:spring-beans:+', 'springframework:spring-context:+', 'springframework:spring-core:+', 'springframework:spring-web:+', 'marathon:marathon-spring-util:+', 'aopalliance:aopalliance:+' appbundler 'oracle:appbundler:+' } ext.jarsToBeSignedFolder = "${buildDir}/jars_to_be_signed" ext.signedJarsFolder = "${buildDir}/signed_jars" ext.openbisClientJarName = 'openbis.jar' ext.dssCliClientJarName = 'dss_client.jar' ext.dssGuiClientJarName = 'dss_upload_gui.jar' task createOpenbisJar(type: Jar) { archiveName = openbisClientJarName destinationDir = file(jarsToBeSignedFolder) outputs.file new File(jarsToBeSignedFolder, archiveName) from zipTree(project(':common').jar.archivePath).plus( zipTree(project(':openbis-common').jar.archivePath).plus( zipTree(project(':openbis_api').jar.archivePath).plus( zipTree(project(':datastore_server').jar.archivePath).plus( zipTree(project(':screening').jar.archivePath).plus( zipTree(project(':openbis').jar.archivePath)))))).matching { include '**/ch/systemsx/cisd/common/**/*.class' include '**/ch/systemsx/cisd/openbis/common/**/*.class' include '**/ch/systemsx/cisd/openbis/generic/client/api/**/*.class' include '**/ch/systemsx/cisd/openbis/generic/client/cli/**/*.class' include '**/ch/systemsx/cisd/openbis/generic/shared/api/**/*.class' include '**/ch/systemsx/cisd/openbis/plugin/screening/client/api/**/*.class' include '**/ch/systemsx/cisd/openbis/plugin/screening/shared/api/**/*.class' include '**/ch/systemsx/cisd/openbis/dss/client/api/**/*.class' include '**/ch/systemsx/cisd/openbis/dss/generic/shared/api/**/*.class' include '**/ch/systemsx/cisd/openbis/dss/screening/shared/api/**/*.class' include '**/shared/I*.class' include '**/shared/basic/dto/**/*.class' include '**/shared/basic/*.class' include '**/*BuildAndEnvironmentInfo.class' } } task createDssClientJar(type: Jar) { archiveName = dssGuiClientJarName destinationDir = file(jarsToBeSignedFolder) outputs.file new File(jarsToBeSignedFolder, archiveName) from (project(':common').compileJava.outputs.getFiles().getAsFileTree().plus( project(':openbis-common').compileJava.outputs.getFiles().getAsFileTree().plus( project(':openbis_api').compileJava.outputs.getFiles().getAsFileTree().plus( project(':openbis').compileJava.outputs.getFiles().getAsFileTree().plus( project(':datastore_server').compileJava.outputs.getFiles().getAsFileTree())))).matching { include 'ch/systemsx/cisd/common/**/*.class' include 'ch/systemsx/cisd/openbis/common/**/*.class' include 'ch/systemsx/cisd/openbis/generic/shared/**/*.class' include 'ch/systemsx/cisd/openbis/plugin/query/shared/**/*.class' include 'ch/systemsx/cisd/openbis/dss/client/**/*.class' include 'ch/systemsx/cisd/openbis/dss/generic/shared/api/**/*.class' include 'ch/systemsx/cisd/openbis/dss/generic/shared/utils/**/*.class' include 'org/python/core/SyspathArchiveHack.class' include 'ch/systemsx/cisd/openbis/dss/BuildAndEnvironmentInfo.class' }) from (project(':datastore_server').fileTree(dir: 'resource', includes: ['ok.png', 'wrong.png', 'wait.gif'])) def dssClientJars = ['cisd-base.jar', 'cisd-args4j.jar', 'cglib-nodep.jar ', 'jline.jar', 'spring.jar', 'stream-supporting-httpinvoker.jar', 'poi.jar', 'poi-ooxml.jar', 'poi-ooxml-schemas.jar', 'commons-codec.jar', 'commons-httpclient.jar', 'commons-io.jar', 'commons-lang.jar', 'commons-logging.jar', 'jython.jar', 'log4j.jar', 'dom4j-1.6.1.jar', 'geronimo-stax-api_1.0_spec-1.0.jar', 'xmlbeans-2.3.0.jar'] manifest { def manifestClasspath = dssClientJars.collect { it }.join(' ') attributes("Main-Class": "ch.systemsx.cisd.openbis.dss.client.api.gui.DataSetUploadClient", "Version": versionNumber, "Build-Number": "${versionNumber} (r${revisionNumber},${cleanFlag})", "Class-Path": manifestClasspath) } } task copyJarsForWebStart(type: Copy, dependsOn: [createOpenbisJar, createDssClientJar]) { from configurations.webStartJars.files from (jarsToBeSignedFolder) { include dssGuiClientJarName rename { String fileName -> fileName.replace(dssGuiClientJarName, dssCliClientJarName)} } into jarsToBeSignedFolder rename 'poi-[0-9]+.*\\.jar', 'poi.jar' rename 'poi-ooxml-[0-9]+.*\\.jar', 'poi-ooxml.jar' rename 'poi-ooxml-schemas-.*\\.jar', 'poi-ooxml-schemas.jar' rename '(.+)-[0-9[r]]+.*\\.jar', '$1.jar' rename 'dom4j.jar', 'dom4j-1.6.1.jar' rename 'geronimo-stax.jar', 'geronimo-stax-api_1.0_spec-1.0.jar' rename 'xmlbeans.jar', 'xmlbeans-2.3.0.jar' rename 'marathon-spring-util.*jar', 'stream-supporting-httpinvoker.jar' } task signWebStartJars(type: Copy, dependsOn: [copyJarsForWebStart]) { from jarsToBeSignedFolder into signedJarsFolder def keystoreFile = '../screening/etc/dev.keystore' inputs.file keystoreFile doLast { file(signedJarsFolder).listFiles().each { file -> if (file.name == dssCliClientJarName) { ant.jar(destfile: file, update: true) { delegate.manifest { attribute(name: 'Main-Class', value: 'ch.systemsx.cisd.openbis.dss.client.api.cli.DssClient') } } } ant.signjar(jar: file, keystore: keystoreFile, alias: 'openbis', storepass: 'openbistest') } } } task dssClientZip(type: Zip, dependsOn: signWebStartJars) { baseName 'dss_client' from (signedJarsFolder) { into 'dss_client/lib' exclude openbisClientJarName } from(project(':datastore_server').file('dist/dss_client.sh')) { into 'dss_client' fileMode 0755 } } task dssUploadGuiStandalone << { ant.taskdef(name: 'bundle', classname: 'com.oracle.appbundler.AppBundlerTask', classpath: configurations.appbundler.asPath) ant.bundle(outputdirectory: "${buildDir}", name: 'DataSetUploader', displayname: 'Data Set Uploader', identifier: 'ch.systemsx.cisd.openbis.dss.client.api.gui.DataSetUploadClient', mainclassname: 'ch.systemsx.cisd.openbis.dss.client.api.gui.DataSetUploadClient') { classpath(dir: "${signedJarsFolder}") { include(name: "cglib-nodep.jar") include(name: "cisd-args4j.jar") include(name: "cisd-base.jar") include(name: "commons-codec.jar") include(name: "commons-httpclient.jar") include(name: "commons-io.jar") include(name: "commons-lang.jar") include(name: "commons-logging.jar") include(name: "dom4j-1.6.1.jar") include(name: "dss_upload_gui.jar") include(name: "geronimo-stax-api_1.0_spec-1.0.jar") include(name: "jython.jar") include(name: "log4j.jar") include(name: "poi-ooxml-schemas.jar") include(name: "poi-ooxml.jar") include(name: "poi.jar") include(name: "spring.jar") include(name: "stream-supporting-httpinvoker.jar") } } } dssUploadGuiStandalone.dependsOn signWebStartJars task dssUploadGuiStandaloneJar(type: Jar, dependsOn: dssUploadGuiStandalone) { baseName 'dss_upload_gui_standalone' from ({ fileTree("${signedJarsFolder}").matching { include "cglib-nodep.jar" include "cisd-args4j.jar" include "cisd-base.jar" include "commons-codec.jar" include "commons-httpclient.jar" include "commons-io.jar" include "commons-lang.jar" include "commons-logging.jar" include "dom4j-1.6.1.jar" include "dss_upload_gui.jar" include "geronimo-stax-api_1.0_spec-1.0.jar" include "jython.jar" include "log4j.jar" include "poi-ooxml-schemas.jar" include "poi-ooxml.jar" include "poi.jar" include "spring.jar" include "stream-supporting-httpinvoker.jar" }.collect { zipTree(it).matching {exclude "META-INF/**"}}}) manifest { attributes("Main-Class": "ch.systemsx.cisd.openbis.dss.client.api.gui.DataSetUploadClient") } } task dssUploadGuiStandaloneZip(type: Zip, dependsOn: dssUploadGuiStandalone) { baseName 'dss_upload_gui_standalone' from ("${buildDir}/DataSetUploader.app") { into 'DataSetUploader.app' } }