configurations.create('webStartJars') 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:+' } jarsToBeSignedFolder = "${buildDir}/jars_to_be_signed" signedJarsFolder = "${buildDir}/signed_jars" openbisClientJarName = 'openbis.jar' dssCliClientJarName = 'dss_client.jar' 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' } } 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'] 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'])) 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' } keystoreFile = '../screening/etc/dev.keystore' task signWebStartJars(type: Copy, dependsOn: [copyJarsForWebStart]) { from jarsToBeSignedFolder into signedJarsFolder 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 } }