build.gradle 16.35 KiB
buildscript {
apply from: '../gradle/repository.gradle'
repositories repositoryConfig
dependencies {
classpath 'apache:commons-codec:1.10',
'owasp:dependency-check-gradle:3.1.2',
'paleozogt:symzip-plugin:0.10.1'
}
}
apply plugin: org.owasp.dependencycheck.gradle.DependencyCheckPlugin
apply plugin: "org.paleozogt.symzip"
dependencyCheck {
failBuildOnCVSS = 7 // 0 - 4 = low, 4 - 7 = medium, 7 - 9 = high, 9-10 = critical
suppressionFile = "owasp_suppressing_false_positives.xml"
analyzers{
assemblyEnabled = false
}
proxy {
server = 'proxy.ethz.ch'
port = 3128
}
}
evaluationDependsOn(':commonbase')
evaluationDependsOn(':common')
evaluationDependsOn(':openbis_api')
evaluationDependsOn(':openbis-common')
evaluationDependsOn(':authentication')
evaluationDependsOn(':dbmigration')
evaluationDependsOn(':openbis')
evaluationDependsOn(':datastore_server')
evaluationDependsOn(':screening')
evaluationDependsOn(':rtd_yeastx')
evaluationDependsOn(':deep_sequencing_unit')
evaluationDependsOn(':plasmid')
evaluationDependsOn(':big_data_link_server')
evaluationDependsOn(':openbis_ng_ui')
apply from: '../gradle/javaproject.gradle'
apply from: 'query-api.gradle'
apply from: 'screening-api.gradle'
apply from: 'clients.gradle'
apply from: 'admin-console.gradle'
apply plugin: 'war'
archivesBaseName = 'openBIS-server-standard-technologies'
configurations.create('gwt')
configurations.create('zipping')
configurations.create('datastore_server')
configurations.create('javadoc_sources')
configurations.create('javadoc_compilation')
def jettyVersion = '9.4.30'
dependencies {
compile project(':screening')
providedCompile 'google:gwt-user:2.4'
providedRuntime "eclipse:jetty-deploy:${jettyVersion}.v20200611@jar",
"eclipse:jetty-xml:${jettyVersion}.v20200611@jar",
"eclipse:jetty-webapp:${jettyVersion}.v20200611@jar",
"eclipse:jetty-servlet:${jettyVersion}.v20200611@jar",
"eclipse:jetty-security:${jettyVersion}.v20200611@jar",
"eclipse:jetty-server:${jettyVersion}.v20200611@jar",
"eclipse:jetty-continuation:${jettyVersion}.v20200611@jar"
gwt 'reveregroup:gwt-image-loader:1.1.4',
'google:gwt-dev:2.4'
zipping "eclipse:jetty-distribution:${jettyVersion}@zip"
datastore_server project(':deep_sequencing_unit'),
project(':rtd_yeastx'),
project(':screening'),
project(':plasmid'),
'bioformats:bioformats:6.5.1',
'imagej:ij:1.43u',
'cisd:cisd-openbis-knime-server:13.6.0.r29301',
'apache:xml-apis:1.3.03',
'slf4j:slf4j:1.6.2',
'slf4j:slf4j-log4j12:1.6.2',
'sybit:image-viewer:0.3.6'
javadoc_sources project(path:':commonbase', configuration: 'archives'),
project(path:':common', configuration: 'archives'),
project(path:':openbis_api', configuration: 'archives'),
project(path:':openbis-common', configuration: 'archives'),
project(path:':openbis', configuration: 'archives'),
project(path:':datastore_server', configuration: 'archives'),
project(path:':screening', configuration: 'archives'),
'sis:sis-base:18.09.0:sources',
'cisd:cisd-args4j:9.11.2:sources',
'cisd:cisd-hotdeploy:13.01.0:sources'
javadoc_compilation project(path:':screening')
testCompile (project(path: ':openbis', configuration: 'tests')) {
exclude group: 'google', module: 'gwt-user'
}
}
sourceSets {
test {
resources {
srcDirs = ['source/java', 'sourceTest/java']
}
}
}
def gwtBuildDir = "${project.buildDir}/gwt"
def gwtCacheBuildDir = "${project.buildDir}/gwt-unitCache"
def gwtModuleName = 'ch.systemsx.cisd.openbis.OpenBIS'
def gwtModuleBuildDir = "${gwtBuildDir}/${gwtModuleName}"
def gwtArchivePath = 'resource'
def gwtArchiveFileName = 'gwt.tar.gz'
task compileGwt (dependsOn: classes, type: JavaExec) {
ext.buildDir = gwtBuildDir
def extraDir = "${project.buildDir}/extra"
// inputs.source
sourceSets.main.java.srcDirs
// inputs.dir
sourceSets.main.output.resourcesDir
outputs.dir buildDir
doFirst {
file(buildDir).mkdirs()
}
main = 'com.google.gwt.dev.Compiler'
classpath {
[
sourceSets.main.java.srcDirs,
project(":openbis").sourceSets.main.java.srcDirs,
project(":openbis").sourceSets.main.output.resourcesDir,
project(":openbis").sourceSets.main.output.classesDirs,
project(":openbis").sourceSets.main.compileClasspath,
project(":common").sourceSets.main.java.srcDirs,
project(":openbis_api").sourceSets.main.java.srcDirs,
project(":screening").sourceSets.main.java.srcDirs,
project(":screening").sourceSets.main.output.resourcesDir,
configurations.gwt
]
}
args =
[
gwtModuleName,
'-war', buildDir,
'-logLevel', 'INFO',
'-localWorkers', '2',
'-compileReport',
'-extra', extraDir,
]
maxHeapSize = '1024m'
systemProperty "javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl"
}
task buildCoreUIPackageUsingJDK8(type: Tar, dependsOn: compileGwt) {
from gwtBuildDir
destinationDirectory = file(gwtArchivePath)
archiveFileName = gwtArchiveFileName
compression = Compression.GZIP
doLast { // Cleanup, the rest of the build should not use these
delete gwtBuildDir
delete gwtCacheBuildDir
}
}
task untarGwt(type: Copy) {
from tarTree(resources.gzip("${gwtArchivePath}/${gwtArchiveFileName}"))
into gwtBuildDir
}
task copyOpenbisStaticResources(type: Copy, dependsOn: untarGwt) {
from "${project(':openbis').projectDir}/source/java/ch/systemsx/cisd/openbis/public"
into gwtModuleBuildDir
}
ext.classpathEntries = files(
project(':openbis').file('source/java/applicationContext.xml'),
project(':openbis').file('source/java/dbConfigurationContext.xml'),
project(':openbis').file('source/java/ehcache.xml'),
project(':openbis').file('source/java/genericApplicationContext.xml'),
project(':openbis').file('source/java/hibernateContext.xml'),
project(':openbis').file('source/java/schema-for-xslt20.xsd'),
project(':openbis').file('source/java/XMLSchema.xsd'),
project(':screening').file('source/java/screening-applicationContext.xml'),
project(':screening').file('source/java/screening-dssApplicationContext.xml'),
project(':screening').file('source/java/screening-plugin-applicationContext.xml'),
project(':common').file('source/java/genericCommonContext.xml'),
'source/java/standard-technologies-applicationContext.xml'
)
ext.zipEntries = files(
project(':openbis').file('dist/server/check.sh'),
project(':openbis').file('dist/server/configure.sh'),
project(':openbis').file('dist/server/export-master-data.py'),
project(':openbis').file('dist/server/export-master-data.sh'),
project(':openbis').file('dist/server/install.sh'),
project(':openbis').file('dist/server/openBIS.keystore'),
project(':openbis').file('dist/server/openbis.conf'),
project(':openbis').file('dist/server/passwd.sh'),
project(':openbis').file('dist/server/register-master-data.sh'),
project(':openbis').file('dist/server/setup-env'),
project(':openbis').file('dist/server/shutdown.sh'),
project(':openbis').file('dist/server/startup.sh'),
project(':openbis').file('dist/server/status.sh'),
project(':openbis').file('dist/server/version.sh'),
project(':openbis').file('dist/server/watchdog.sh'),
project(':openbis').fileTree(dir: 'dist/server').matching {
include 'base/**'
},
file('dist/server/service.properties'),
file('dist/server/web-client.properties')
)
task checkFilesExist {
inputs.files files(classpathEntries, zipEntries)
doLast {
classpathEntries.each {
x -> assert x.exists()
}
zipEntries.each {
x -> assert x.exists()
}
}
}
war.dependsOn untarGwt
war.dependsOn copyOpenbisStaticResources
war.dependsOn checkFilesExist
war.dependsOn signWebStartJars
war {
rootSpec.eachFile { file ->
if (file.name.startsWith('cisd-cifex')
|| file.name.startsWith('datastore_server')
|| file.name.startsWith('bioformats')
|| file.name.startsWith('cisd-image-readers')
) {
file.exclude()
}
}
from "${project.buildDir}/gwt/ch.systemsx.cisd.openbis.OpenBIS"
from signedJarsFolder
webXml = file('resource/server/web.xml')
webInf {
from "${project.buildDir}/gwt/WEB-INF",
project(':openbis').file('resource/server/bis-common.xml'),
file('resource/server/spring-servlet.xml'),
file('resource/server/jetty-web.xml'),
project(':common').file('resource/server/web-common.xml')
}
from (classpathEntries) {
into("WEB-INF/classes")
}
from('dist/server'){
into("WEB-INF/classes")
include "etc/log.xml"
}
from('targets/dist'){
into("WEB-INF/classes")
include 'BUILD*INFO'
rename 'BUILD.*INFO', 'BUILD-openbis.INFO'
}
from('../screening/source'){
into("WEB-INF/classes")
include "sql/**/*.sql"
exclude "sql/imaging/postgresql/_ERD"
}
from('../openbis/source'){
into("WEB-INF/classes")
include "sql/**/*.sql"
exclude "sql/generic/_ERD"
duplicatesStrategy 'exclude'
}
}
def downloadCorePlugin(url, pluginname) {
def file = project(':openbis').file("../openbis_standard_technologies/targets/downloads/${pluginname}.zip")
if (file.exists() == false || System.currentTimeMillis() - file.lastModified() > 3600000) {
file.getParentFile().mkdirs()
ext.executeFunction('curl', [url, '-sLk', '-o', file.getAbsolutePath()])
ext.executeFunction('unzip', ['-uqo', file.getAbsolutePath(), '-d', '../openbis_standard_technologies/targets/downloads/'])
}
}
import org.paleozogt.gradle.zip.SymZip;
task zipCorePlugins(type: SymZip) {
includeEmptyDirs = false
archiveName 'core-plugins.zip'
downloadCorePlugin('https://github.com/aarpon/obit_flow_core_technology/archive/release/20.x.zip', 'flow')
downloadCorePlugin('https://github.com/aarpon/obit_microscopy_core_technology/archive/release/20.x.zip', 'microscopy')
downloadCorePlugin('https://github.com/aarpon/obit_shared_core_technology/archive/release/20.x.zip', 'shared')
from project(':screening').fileTree(dir: 'source/core-plugins', includes:['screening/**', 'screening-optional/**'], excludes:['**/dss/**', '**/package-to-dist'])
from project(':deep_sequencing_unit').fileTree(dir: 'source/core-plugins', includes:['illumina-ngs/**'], excludes:['**/dss/**', '**/package-to-dist'])
from fileTree(dir: 'targets/downloads/obit_flow_core_technology-release-20.x/core-plugins', includes:['flow/**'])
from fileTree(dir: 'targets/downloads/obit_microscopy_core_technology-release-20.x/core-plugins', includes:['microscopy/**'])
from fileTree(dir: 'targets/downloads/obit_shared_core_technology-release-20.x/core-plugins', includes:['shared/**'])
from 'dist/core-plugins'
from 'dist/server/core-plugins.properties'
into 'core-plugins'
}
def generateMD5(final file) {
java.security.MessageDigest digest = java.security.MessageDigest.getInstance("MD5")
file.withInputStream(){is->
byte[] buffer = new byte[8192]
int read = 0
while( (read = is.read(buffer)) > 0) {
digest.update(buffer, 0, read);
}
}
byte[] md5sum = digest.digest()
BigInteger bigInt = new BigInteger(1, md5sum)
return bigInt.toString(16)
}
task checksums {
ext.destFile = new File(buildDir, 'configuration.MD5')
ext.inputFiles = war.getSource().filter({file -> file.name.endsWith('xml') || file.name.endsWith('.conf') || file.name.endsWith('.properties')})
inputs.files inputFiles
outputs.file destFile
doLast {
if (destFile.exists()) {
destFile.delete()
}
destFile.createNewFile()
def configFiles = classpathEntries.filter({file -> file.name.endsWith('xml') || file.name.endsWith('.conf') || file.name.endsWith('.properties')})
configFiles.each {file ->
destFile.text += generateMD5(file)+" webapps/openbis/WEB-INF/classes/"+file.name+"\n"
}
configFiles = war.getSource().filter({file -> file.name.endsWith('xml') || file.name.endsWith('.conf') || file.name.endsWith('.properties')}).minus(classpathEntries)
configFiles.each {file ->
destFile.text += generateMD5(file)+" webapps/openbis/WEB-INF/"+file.name+"\n"
}
}
}
checksums.dependsOn war
task createJettyVersionFile {
ext.versionFile = new File(buildDir, 'jetty-version.txt')
outputs.file versionFile
doLast {
versionFile.text = "${jettyVersion}"
}
}
task zip(type: Zip, dependsOn: createJettyVersionFile) {
from createJettyVersionFile
from war
from zipEntries
from checksums
from configurations.zipping
from zipCorePlugins.archivePath
from zipAdminConsole.archivePath
rename 'jetty-distribution(.*).zip', 'jetty.zip'
rename 'openBIS(.*).war', 'openBIS.war'
}
zip.dependsOn war
zip.dependsOn zipCorePlugins
zip.dependsOn zipAdminConsole
zip.dependsOn checksums
task zipDss(type: Zip, dependsOn: signWebStartJars) {
baseName 'datastore_server-standard-technologies'
includeEmptyDirs true
from (configurations.datastore_server) {
into 'datastore_server/lib'
exclude '**/antlr*.jar'
exclude '**/fastutil*.jar'
exclude '**/gwt*.jar'
exclude '**/gxt*.jar'
exclude '**/hibernate*.jar'
exclude '**/jmock*.jar'
exclude '**/junit*.jar'
exclude '**/lucene*.jar'
exclude '**/restrictions*.jar'
exclude '**/testng*.jar'
rename 'common-.*jar', 'common.jar'
rename 'commonbase-.*jar', 'commonbase.jar'
}
from (signedJarsFolder) {
into 'datastore_server/lib/dss_upload_gui'
exclude openbisClientJarName
exclude dssCliClientJarName
}
from (project(':datastore_server').fileTree(dir: 'dist', includes: ['**/*'], excludes:['dss_client.sh', 'etc/**'])) {
into 'datastore_server';
}
from (project(':datastore_server').files('dist/etc/datastore_server.conf', 'dist/etc/openBIS.keystore')) {
into 'datastore_server/etc';
}
from (fileTree(dir: 'dist', includes: ['etc/service.properties', 'etc/log.xml'])) {
into 'datastore_server'
}
from (project(':screening').file('dist/etc/tabular-data-graph.properties')) {
into 'datastore_server/etc';
}
}
task zipBdlServer(type: Zip, dependsOn: project(':big_data_link_server').tasks.distZip) {
baseName 'big_data_link_server'
from zipTree('../big_data_link_server/build/distributions/big_data_link_server.zip')
}
task pybisZip(type: Zip) {
baseName 'pybis'
from '../pybis/'
}
task obisZip(type: Zip) {
baseName 'obis'
from '../obis/'
}
task clientsAndApis(type: Zip, dependsOn: [dssClientZip, queryApiZip, apiV3Zip, screeningApiZip, pybisZip, obisZip]) {
baseName 'openBIS-clients-and-APIs'
from dssClientZip.archivePath
from queryApiZip.archivePath
from apiV3Zip.archivePath
from screeningApiZip.archivePath
from pybisZip.archivePath
from obisZip.archivePath
from ('dist/client/readme.txt')
rename { filename ->
if (filename.startsWith('pybis-')) {
def contentOfSetUpFile = zipTree(pybisZip.archivePath).getFiles().findAll {it.path.endsWith('src/python/setup.py') }.iterator().next().text
def pybisVersion = ( contentOfSetUpFile =~ /version.*=.*'(.*)'/)[0][1]
'pybis-' + pybisVersion + '.zip'
} else {
filename
}
}
}
task deleteOpenbisNgUi(type: Delete) {
delete 'dist/core-plugins/openbis-ng-ui'
}
task copyOpenbisNgUiToCorePlugins(type: Copy, dependsOn: [deleteOpenbisNgUi, ':openbis_ng_ui:build']) {
from project(':openbis_ng_ui').file('build/core-plugins')
into file('dist/core-plugins')
}
zipCorePlugins.dependsOn copyOpenbisNgUiToCorePlugins
task generateJavadoc(type: Javadoc) {
source = configurations.javadoc_sources.collect { zipTree(it).matching {
include "**/ch/ethz/sis/openbis/generic/asapi/**/*.java"
include "**/ch/ethz/sis/openbis/generic/dssapi/**/*.java"
include "**/ch/systemsx/cisd/**/api/**/*.java"
include "**/ch/systemsx/cisd/common/annotation/*.java"
include "**/ch/systemsx/cisd/base/**/*.java"
include "**/OpenBISScreeningML.java"
include "**/ch/systemsx/cisd/**/etlserver/TopLevelDataSetRegistratorGlobalState.java"
include "**/ch/systemsx/cisd/**/etlserver/registrator/*.java"
include "**/ch/systemsx/cisd/common/mail/*.java"
}}
classpath = configurations.javadoc_compilation
maxMemory = "1024m"
options.addStringOption("source", "1.8")
}
build.dependsOn zip
build.dependsOn zipDss
build.dependsOn zipBdlServer
build.dependsOn clientsAndApis
build.dependsOn dssUploadGuiStandaloneZip
build.dependsOn dssUploadGuiStandaloneJar
build.dependsOn generateJavadoc