apply plugin: 'kotlin' apply plugin: 'java' apply plugin: 'net.corda.plugins.publish-utils' apply plugin: 'us.kirchmeier.capsule' description 'Corda webserver module' repositories { mavenLocal() mavenCentral() jcenter() maven { url 'https://dl.bintray.com/kotlin/exposed' } } configurations { integrationTestCompile.extendsFrom testCompile integrationTestRuntime.extendsFrom testRuntime runtimeArtifacts } sourceSets { integrationTest { kotlin { compileClasspath += main.output + test.output runtimeClasspath += main.output + test.output srcDir file('src/integration-test/kotlin') } } test { resources { srcDir "../config/test" } } main { resources { srcDir "../config/dev" } } } dependencies { compile project(':core') compile project(':node') // TODO: Break this dependency // Web stuff: for HTTP[S] servlets compile "org.eclipse.jetty:jetty-servlet:${jetty_version}" compile "org.eclipse.jetty:jetty-webapp:${jetty_version}" compile "javax.servlet:javax.servlet-api:3.1.0" compile "org.jolokia:jolokia-agent-war:$jolokia_version" compile "commons-fileupload:commons-fileupload:1.3.2" // Jersey for JAX-RS implementation for use in Jetty compile "org.glassfish.jersey.core:jersey-server:${jersey_version}" compile "org.glassfish.jersey.containers:jersey-container-servlet-core:${jersey_version}" compile "org.glassfish.jersey.containers:jersey-container-jetty-http:${jersey_version}" // NOTE there is a Jackson version clash between jersey-media-json-jackson (v2.5.4) and jackson-module-kotlin (v.2.5.5) // Have not found an Issue in the issue tracker for Jersey for this issue compile ("org.glassfish.jersey.media:jersey-media-json-jackson:${jersey_version}") { exclude group: 'com.fasterxml.jackson.core', module: 'jackson-annotations' exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind' exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core' } compile ("com.fasterxml.jackson.module:jackson-module-kotlin:${jackson_version}") { exclude group: 'com.fasterxml.jackson.core', module: 'jackson-annotations' } testCompile "junit:junit:$junit_version" } task integrationTest(type: Test) { testClassesDir = sourceSets.integrationTest.output.classesDir classpath = sourceSets.integrationTest.runtimeClasspath } publish { name = 'corda-webserver' publishWar = false // TODO: Use WAR instead of JAR } task buildWebserverJar(type: FatCapsule) { applicationClass 'net.corda.webserver.WebServer' archiveName "corda-webserver-${corda_version}.jar" applicationSource = files(project.tasks.findByName('jar'), '../build/classes/main/CordaCaplet.class', 'config/dev/log4j2.xml') from 'NOTICE' // Copy CDDL notice capsuleManifest { applicationVersion = corda_version javaAgents = ["quasar-core-${quasar_version}-jdk8.jar"] systemProperties['visualvm.display.name'] = 'Corda Webserver' systemProperties['corda.version'] = corda_version minJavaVersion = '1.8.0' // This version is known to work and avoids earlier 8u versions that have bugs. minUpdateVersion['1.8'] = '102' caplets = ['CordaCaplet'] // JVM configuration: // - Constrain to small heap sizes to ease development on low end devices. // - Switch to the G1 GC which is going to be the default in Java 9 and gives low pause times/string dedup. // // If you change these flags, please also update Driver.kt jvmArgs = ['-Xmx200m', '-XX:+UseG1GC'] } manifest { attributes('Corda-Version': corda_version) } } artifacts { runtimeArtifacts buildWebserverJar }