Skip to content
Snippets Groups Projects
build.gradle 16.7 KiB
Newer Older
  • Learn to ignore specific revisions
  • buildscript {
        apply from: '../gradle/repository.gradle'
    
    
    	repositories repositoryConfig
    
    
        dependencies {
    
            classpath 'apache:commons-codec:1.10',
    
                      'owasp:dependency-check-gradle:6.2.2',
    
    				  'paleozogt:symzip-plugin:0.10.1',
    				  'com.moowork.gradle:gradle-node-plugin:1.2.0'
    
    anttil's avatar
    anttil committed
    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
      }
    
    anttil's avatar
    anttil committed
      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')
    
    felmer's avatar
    felmer committed
    apply from: '../gradle/javaproject.gradle'
    
    apply from: 'screening-api.gradle'
    
    apply from: 'admin-console.gradle'
    
    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.44'
    
    	compile project(':screening')
    
    	providedCompile 'google:gwt-user:2.4'
    
    	providedRuntime "eclipse:jetty-deploy:${jettyVersion}.v20210927@jar",
                        "eclipse:jetty-xml:${jettyVersion}.v20210927@jar",
                        "eclipse:jetty-webapp:${jettyVersion}.v20210927@jar",
                        "eclipse:jetty-servlet:${jettyVersion}.v20210927@jar",
                        "eclipse:jetty-security:${jettyVersion}.v20210927@jar",
                        "eclipse:jetty-server:${jettyVersion}.v20210927@jar",
                        "eclipse:jetty-continuation:${jettyVersion}.v20210927@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'),
    
    					 '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'
        }
    
    }
    
    
    	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
    
    	main = 'com.google.gwt.dev.Compiler'
    
    			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,
    
    			'-war', buildDir,
    			'-logLevel', 'INFO',
    			'-localWorkers', '2',
    
    			'-compileReport',
    
    	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
    }
    
    
    node {
    	download = true
    	version = '10.22.0'
    	workDir = file("${projectDir}/node/nodejs")
    	nodeModulesDir = file("${projectDir}")
    }
    
    task bundleOpenbisStaticResources(type: Exec) {
    	dependsOn 'untarGwt'
    	dependsOn 'npmInstall'
    	commandLine 'bash', '-c', "${projectDir}/resource/js/v3/build.sh"
    }
    
    task copyOpenbisStaticResources(type: Copy) {
    	dependsOn 'bundleOpenbisStaticResources'
    
    	from "${project(':openbis').projectDir}/source/java/ch/systemsx/cisd/openbis/public"
    	into gwtModuleBuildDir
    }
    
    	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'
    )
    
    
    	project(':openbis').file('dist/server/autosymlink.sh'),
    
    	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'),
    
    anttil's avatar
    anttil committed
    	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
    
        rootSpec.eachFile { file ->
    
            if (file.name.startsWith('cisd-cifex')
    
                    || file.name.startsWith('datastore_server')
                    || file.name.startsWith('bioformats')
                    || file.name.startsWith('cisd-image-readers')
                    ) {
    
        from "${project.buildDir}/gwt/ch.systemsx.cisd.openbis.OpenBIS"
    
        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) {
    
        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
    
      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:['**/package-to-dist'])
      from project(':deep_sequencing_unit').fileTree(dir: 'source/core-plugins', includes:['illumina-ngs/**'], excludes:['**/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/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"
    
    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 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
    
    task zipDss(type: Zip, dependsOn: signWebStartJars) {
    
    	baseName 'datastore_server-standard-technologies'
    	includeEmptyDirs true
    
    	from (configurations.datastore_server) {
    		into 'datastore_server/lib'
    
    		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'
    
    	   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 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 {
    
    felmer's avatar
    felmer committed
    		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 zipBdlServer
    
    build.dependsOn dssUploadGuiStandaloneJar
    
    anttil's avatar
    anttil committed
    build.dependsOn generateJavadoc