task queryApiJar(type: Jar) { baseName 'openBIS-query-API' includeEmptyDirs false from project(':lib-commonbase').compileJava.outputs.getFiles().getAsFileTree().plus( project(':lib-common').compileJava.outputs.getFiles().getAsFileTree().plus( project(':lib-openbis-common').compileJava.outputs.getFiles().getAsFileTree().plus( project(':server-application-server').compileJava.outputs.getFiles().getAsFileTree().plus( project(':api-openbis-java').compileJava.outputs.getFiles().getAsFileTree().plus( project(':server-original-data-store').compileJava.outputs.getFiles().getAsFileTree()))))).matching { include "ch/systemsx/cisd/common/exceptions/**/*.class" include "ch/systemsx/cisd/common/spring/HttpInvokerUtils.class" include "ch/systemsx/cisd/common/api/**/*.class" exclude "ch/systemsx/cisd/common/api/server/**/*.class" include "ch/systemsx/cisd/openbis/common/api/**/*.class" exclude "ch/systemsx/cisd/openbis/common/api/server/**/*.class" include "ch/systemsx/cisd/openbis/generic/shared/api/**/*.class" include "ch/systemsx/cisd/openbis/generic/shared/basic/**/*.class" include "ch/systemsx/cisd/openbis/plugin/query/**/api/**/*.class" exclude "ch/systemsx/cisd/openbis/**/server/api/**/*.class" include "ch/systemsx/cisd/openbis/dss/client/api/v1/**/*.class" include "ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/**/*.class" include "ch/systemsx/cisd/openbis/BuildAndEnvironmentInfo.class" include "*.INFO" } } task queryApiSources(type: Zip) { archiveName 'sources-query-api.zip' from project(':lib-commonbase').files('source/java').getAsFileTree().plus( project(':lib-common').files('source/java').getAsFileTree().plus( project(':lib-openbis-common').files('source/java').getAsFileTree().plus( project(':server-application-server').files('source/java').getAsFileTree().plus( project(':api-openbis-java').files('source/java').getAsFileTree().plus( project(':server-original-data-store').files('source/java').getAsFileTree()))))).matching { include "ch/systemsx/cisd/common/exceptions/**/*.java" include "ch/systemsx/cisd/common/spring/HttpInvokerUtils.java" include "ch/systemsx/cisd/common/api/**/*.java" exclude "ch/systemsx/cisd/common/api/server/**/*.java" include "ch/systemsx/cisd/openbis/common/api/**/*.java" exclude "ch/systemsx/cisd/openbis/common/api/server/**/*.java" include "ch/systemsx/cisd/openbis/generic/shared/api/**/*.java" include "ch/systemsx/cisd/openbis/generic/shared/basic/**/*.java" include "ch/systemsx/cisd/openbis/plugin/query/**/api/**/*.java" exclude "ch/systemsx/cisd/openbis/**/server/api/**/*.java" include "ch/systemsx/cisd/openbis/dss/client/api/v1/**/*.java" include "ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/**/*.java" include "ch/systemsx/cisd/openbis/BuildAndEnvironmentInfo.java" } } configurations.create('queryApiJavadoc') dependencies { queryApiJavadoc project(':server-original-data-store') } task queryApiJavaDoc(type: Javadoc) { source queryApiSources.inputs.getFiles().getAsFileTree().matching { include "**/*.java" } classpath = configurations.queryApiJavadoc } task queryApiJavaDocZip(type: Zip, dependsOn: queryApiJavaDoc) { archiveName 'javadoc-query-api.zip' from queryApiJavaDoc.destinationDir } configurations.create('queryApiDependencies') dependencies { queryApiDependencies 'sis:sis-base:23.06.0', 'apache:httpclient:4.3.6', 'apache:httpcore:4.3.3', 'apache:log4j:1.2.15', 'springframework:spring-aop:5.0.1.RELEASE', 'springframework:spring-beans:5.0.1.RELEASE', 'springframework:spring-context:5.0.1.RELEASE', 'springframework:spring-core:5.0.1.RELEASE', 'springframework:spring-web:5.0.1.RELEASE', 'springframework:spring-webmvc:5.0.1.RELEASE', 'springframework:spring-expression:5.0.1.RELEASE', 'apache:commons-logging:1.2', 'apache:commons-lang3:3.11', 'marathon:marathon-spring-util:1.2.5', 'aopalliance:aopalliance:1.0' } task queryApiZip(type: Zip, dependsOn: [queryApiJar, queryApiSources, queryApiJavaDocZip]) { baseName 'openBIS-query-API' from queryApiJar.archivePath from queryApiSources.archivePath from queryApiJavaDocZip.archivePath from configurations.queryApiDependencies into 'openBIS-query-API' } /////////// API V3 //////////////////// task apiV3Jar(type: Jar) { baseName 'openBIS-API-V3' includeEmptyDirs false from project(':lib-commonbase').compileJava.outputs.getFiles().getAsFileTree().plus( project(':lib-common').compileJava.outputs.getFiles().getAsFileTree().plus( project(':lib-openbis-common').compileJava.outputs.getFiles().getAsFileTree().plus( project(':server-application-server').compileJava.outputs.getFiles().getAsFileTree().plus( project(':api-openbis-java').compileJava.outputs.getFiles().getAsFileTree())))).matching { include "ch/systemsx/cisd/common/exceptions/**/*.class" include "ch/systemsx/cisd/common/spring/HttpInvokerUtils.class" include "ch/systemsx/cisd/common/spring/IRemoteSpringBeanProvider.class" include "ch/systemsx/cisd/common/spring/Jetty*.class" include "ch/systemsx/cisd/common/http/*.class" include "ch/systemsx/cisd/common/api/**/*.class" exclude "ch/systemsx/cisd/common/api/server/**/*.class" include "ch/systemsx/cisd/common/reflection/*.class" include "ch/systemsx/cisd/common/shared/basic/**/*.class" include "ch/systemsx/cisd/openbis/common/api/**/*.class" exclude "ch/systemsx/cisd/openbis/common/api/server/**/*.class" include "ch/ethz/sis/openbis/generic/*.class" include "ch/ethz/sis/openbis/generic/asapi/v3/**/*.class" include "ch/ethz/sis/openbis/generic/dssapi/v3/**/*.class" include "ch/systemsx/cisd/openbis/BuildAndEnvironmentInfo.class" include "*.INFO" } } configurations.create('apiV3Dependencies') dependencies { apiV3Dependencies 'sis:sis-base:23.06.0', 'sis:sis-file-transfer:19.03.1', 'apache:httpclient:4.3.6', 'apache:commons-lang3:3.11', 'eclipse:jetty-client:9.4.44.v20210927', 'springframework:spring-web:5.0.1.RELEASE', 'marathon:marathon-spring-util:1.2.5' } apply plugin: 'ivy-publish' def _configurations = configurations if (!project.hasProperty("publishRevision")) { ext.publishRevision = "-1" } if (!project.hasProperty("repositoryRoot")) { ext.repositoryRoot = "/non-existent" } publishing { publications { ivyApiV3(IvyPublication) { from components.java organisation 'openbis' module 'openbis-v3-api' revision = project.publishRevision descriptor.withXml { asNode().remove(asNode().publications) asNode().remove(asNode().configurations) asNode().info[0].attributes().remove('status') asNode().info[0].attributes().remove('publication') asNode().remove(asNode().dependencies) asNode().appendNode('dependencies') _configurations.apiV3Dependencies.resolvedConfiguration.firstLevelModuleDependencies.each { def node = asNode().dependencies[0].appendNode('dependency') node.attributes()['org'] = it.moduleGroup node.attributes()['name'] = it.moduleName node.attributes()['rev'] = it.moduleVersion } } } } } task prepublish { doLast { if (publishRevision == "-1") { throw new GradleException("No publish revision defined. Run this task like: ./gradlew clean publishApiV3 -PpublishRevision=S277 -PrepositoryRoot=/Users/juanf/git/openbis/ivy-repository") } if (repositoryRoot == "/non-existent") { throw new GradleException("No repository root defined. Run this task like: ./gradlew clean publishApiV3 -PpublishRevision=S277 -PrepositoryRoot=/Users/juanf/git/openbis/ivy-repository") } } } def publishDir = new File("${repositoryRoot}/openbis/openbis-v3-api/${publishRevision}") task publishApiV3(type: Sync) { dependsOn "prepublish", "generateDescriptorFileForIvyApiV3Publication", "apiV3Jar" doFirst { publishDir.mkdirs() } from("${buildDir}/publications/ivyApiV3/ivy.xml") from(apiV3Jar.archivePath) { rename '(.*)', "openbis-v3-api-${publishRevision}.jar" } into publishDir } task apiV3JarBatteriesIncluded(type: Jar, dependsOn: [apiV3Jar]) { duplicatesStrategy 'include' baseName 'openBIS-API-V3-batteries-included' includeEmptyDirs false from(zipTree(apiV3Jar.archivePath)) { include '**/*' } from(configurations.apiV3Dependencies.collect { zipTree(it) }) { include '**/*' } } task apiV3Sources(type: Jar) { archiveName 'sources-api-v3.zip' from project(':lib-commonbase').files('source/java').getAsFileTree().plus( project(':lib-common').files('source/java').getAsFileTree().plus( project(':lib-openbis-common').files('source/java').getAsFileTree().plus( project(':server-application-server').files('source/java').getAsFileTree().plus( project(':api-openbis-java').files('source/java').getAsFileTree())))).matching { include "ch/systemsx/cisd/common/exceptions/**/*.java" include "ch/systemsx/cisd/common/spring/HttpInvokerUtils.java" include "ch/systemsx/cisd/common/spring/IRemoteSpringBeanProvider.java" include "ch/systemsx/cisd/common/api/**/*.java" exclude "ch/systemsx/cisd/common/api/server/**/*.java" include "ch/systemsx/cisd/common/reflection/*.java" include "ch/systemsx/cisd/common/shared/basic/**/*.java" include "ch/systemsx/cisd/openbis/common/api/**/*.java" exclude "ch/systemsx/cisd/openbis/common/api/server/**/*.java" include "ch/ethz/sis/openbis/generic/asapi/v3/**/*.java" include "ch/ethz/sis/openbis/generic/dssapi/v3/**/*.java" include "ch/systemsx/cisd/openbis/BuildAndEnvironmentInfo.java" } } configurations.create('apiV3Javadoc') dependencies { apiV3Javadoc project(':api-openbis-java') } task apiV3JavaDoc(type: Javadoc) { source apiV3Sources.inputs.getFiles().getAsFileTree().matching { include "**/*.java" } classpath = configurations.apiV3Javadoc } task apiV3JavaDocZip(type: Zip, dependsOn: apiV3JavaDoc) { archiveName 'javadoc-api-v3.zip' from apiV3JavaDoc.destinationDir } task apiV3Zip(type: Zip, dependsOn: [apiV3JarBatteriesIncluded, apiV3Sources, apiV3JavaDocZip]) { baseName 'openBIS-API-V3' from apiV3Jar.archiveFile from apiV3JarBatteriesIncluded.archiveFile from apiV3Sources.archiveFile from apiV3JavaDocZip.archiveFile from configurations.apiV3Dependencies into 'openBIS-API-V3' } /////////// DROPBOX API V2 //////////////////// task dropboxApiJar(type: Jar) { baseName 'openBIS-API-dropbox' includeEmptyDirs false from project(':server-original-data-store').compileJava.outputs.getFiles().getAsFileTree().matching { include "ch/systemsx/cisd/etlserver/registrator/api/v2/*.class" include "ch/systemsx/cisd/etlserver/registrator/api/v2/impl/*.class" include "ch/systemsx/cisd/openbis/dss/generic/shared/api/**/*.class" } } task dropboxApiZip(type: Zip, dependsOn: [dropboxApiJar]) { baseName 'openBIS-API-dropbox' from dropboxApiJar.archiveFile into 'openBIS-API-dropbox' } configurations.create('dropboxApiJavadoc') dependencies { dropboxApiJavadoc project(':server-original-data-store') } task dropboxApiJavadoc(type: Javadoc) { source project(':server-original-data-store').files('source/java').getAsFileTree().matching { include "ch/systemsx/cisd/etlserver/registrator/api/v2/*.java" include "ch/systemsx/cisd/etlserver/registrator/api/v2/impl/*.java" include "ch/systemsx/cisd/openbis/dss/generic/shared/api/**/*.class" } classpath = configurations.dropboxApiJavadoc } task dropboxJavaDocZip(type: Zip, dependsOn: dropboxApiJavadoc) { archiveName 'javadoc-dropbox-api.zip' from dropboxApiJavadoc.destinationDir } /////////// DYNAMIC PROPERTIES API //////////////////// configurations.create('dynamicApiJavadoc') dependencies { dynamicApiJavadoc project(':server-application-server') } task dynamicApiJavadoc(type: Javadoc) { source project(':server-application-server').files('source/java').getAsFileTree().matching { include "ch/systemsx/cisd/openbis/generic/shared/hotdeploy_plugins/api/*.java" } classpath = configurations.dynamicApiJavadoc } task dynamicApiJavadocZip(type: Zip, dependsOn: dynamicApiJavadoc) { archiveName 'javadoc-dynamic-api.zip' from dropboxApiJavadoc.destinationDir }