Skip to content
Snippets Groups Projects
build.gradle 15 KiB
Newer Older
def vXnat = '1.7.0-SNAPSHOT'
def vXnatPipeline = vXnat
def vSpring = '4.2.5.RELEASE'
def vSpringSecurity = '4.0.4.RELEASE'
def vSwagger = '2.3.1'
def vHibernate = '4.3.11.Final'
def vEhcache = '2.6.11'
def vPostgreSQL = '9.4.1207'
def vServletApi = '3.1.0'
def vLog4j = '1.2.17'
def vJunit = '4.12'
def vSaxon = '9.1.0.8'
def vJython = '2.7.0'

group 'org.nrg.xnat'
version vXnat

buildscript {
    repositories {
            url 'https://nrgxnat.artifactoryonline.com/nrgxnat/libs-release'
            name 'XNAT Release Repository'
        }
        maven {
            url 'https://nrgxnat.artifactoryonline.com/nrgxnat/libs-snapshot'
        classpath "com.bmuschko:gradle-cargo-plugin:2.2.2"
        classpath "com.bmuschko:gradle-tomcat-plugin:2.2.4"
apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'com.bmuschko.tomcat'
apply plugin: 'com.bmuschko.cargo'
apply plugin: 'idea'
apply plugin: 'eclipse'

        url 'https://nrgxnat.artifactoryonline.com/nrgxnat/libs-release'
        name 'XNAT Release Repository'
    }
    maven {
        url 'https://nrgxnat.artifactoryonline.com/nrgxnat/libs-snapshot'
        name 'XNAT Snapshot Repository'
    }
    maven {
        url 'https://nrgxnat.artifactoryonline.com/nrgxnat/ext-release'
        name 'XNAT External Release Repository'
    }
    maven {
        url 'http://www.dcm4che.org/maven2'
        name 'dcm4che Maven Repository'
    }
    mavenCentral()
    jcenter()
sourceCompatibility = 1.7
targetCompatibility = 1.7
if (hasProperty("rt.17.jar")) {
    // Solution for bootstrap classpath warning and possible issues with compatibility with 1.7 libraries
    // was taken from this post on discuss.gradle.org: http://bit.ly/24xD9j0
    def rt17jar = getProperty("rt.17.jar")
    logger.info "Using ${rt17jar} as the bootstrap class path jar."
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.fork = true
            options.compilerArgs << "-XDignore.symbol.file"
            options.bootClasspath = rt17jar
        }
    }
} else {
    logger.warn "No value was set for the rt.17.jar build property, using the default bootstrap class path. You should consider setting rt.17.jar to indicate a jar file containing the Java 1.7 run-time library:\n"
    logger.warn "  ./gradlew -Prt.17.jar=rt-1.7.0_45.jar war\n"
}

if (hasProperty("archiveName")) {
    war.archiveName = archiveName.endsWith(".war") ? archiveName : "${archiveName}.war"
} else {

tomcatRun.contextPath = '/'
tomcatRunWar.contextPath = '/'

[tomcatRun, tomcatRunWar].each { task ->
    // TODO: This can be configured with an external folder reference to be used for loading XNAT modules.
    task.additionalRuntimeResources << file('/Users/rherrick/xnat/config/plugins')
}

task deployToTomcat(type: Copy, dependsOn: war) {
    from war.archivePath
    into "${propertyWithDefault('tomcatHome', '.')}/webapps"
}

cargo {
    // These properties must be set in the ~/.gradle/gradle.properties file or passed on the Gradle command line in
    // the form -PdeployPort=8080 -PdeployContext=/ -PdeployHost=localhost -PdeployUser=deploy -PdeployPassword=deploy
    containerId = 'tomcat7x'
    port = propertyWithDefault('deployPort', 8080) as int

    deployable {
        context = propertyWithDefault('deployContext', '/')
    }

    remote {
        hostname = propertyWithDefault('deployHost', 'localhost')
        username = propertyWithDefault('deployUser', 'deploy')
        password = propertyWithDefault('deployPassword', 'deploy')
    }
}

if (JavaVersion.current().isJava8Compatible()) {
    allprojects {
        tasks.withType(Javadoc) {
            options.addStringOption('Xdoclint:none', '-quiet')
        }
    }
}

task sourceJar(type: Jar, dependsOn: classes) {
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    from javadoc.destinationDir
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            artifact sourceJar {
                classifier "sources"
            }

            artifact javadocJar {
                classifier "javadoc"
            }

            pom.withXml {
                def root = asNode()
                root.appendNode('name', 'XNAT Server')
                root.appendNode('description', 'XNAT is an open-source imaging informatics software platform dedicated to helping you perform imaging-based research. XNAT’s core functions manage importing, archiving, processing and securely distributing imaging and related study data. But its extended uses continue to evolve.')
                root.appendNode('url', 'https://bitbucket.org/xnatdev/xnat-web')
                root.appendNode('inceptionYear', '2016')

                def scm = root.appendNode('scm')
                scm.appendNode('url', 'https://bitbucket.org/xnatdev/xnat-web')
                scm.appendNode('connection', 'scm:https://bitbucket.org/xnatdev/xnat-web.git')
                scm.appendNode('developerConnection', 'scm:git://bitbucket.org/xnatdev/xnat-web.git')

                def license = root.appendNode('licenses').appendNode('license')
                license.appendNode('name', 'Simplified BSD 2-Clause License')
                license.appendNode('url', 'http://xnat.org/about/license.php')
                license.appendNode('distribution', 'repo')

                def developers = root.appendNode('developers')
                def rherrick = developers.appendNode('developer')
                rherrick.appendNode('id', 'rherrick')
                rherrick.appendNode('name', 'Rick Herrick')
                rherrick.appendNode('email', 'jrherrick@wustl.edu')
            }
        }
    }
    repositories {
        maven {
            credentials {
                // These properties must be set in the ~/.gradle/gradle.properties file or passed on the Gradle command
                // line in the form -PrepoUsername=foo -PrepoPassword=bar.
                username propertyWithDefault('repoUsername', 'username')
                password propertyWithDefault('repoPassword', 'password')
            }
            if (project.version.endsWith('-SNAPSHOT')) {
                url "https://nrgxnat.artifactoryonline.com/nrgxnat/libs-snapshot-local"
            } else {
                url "https://nrgxnat.artifactoryonline.com/nrgxnat/libs-release-local"
            }
        }
    }
}

def propertyWithDefault(def String property, def Object value) {
    hasProperty(property) ? getProperty(property) : value
}

configurations {
    all*.exclude group: 'avalon-framework'
    all*.exclude group: 'avalon-logkit'
    all*.exclude group: 'com.metaparadigm'
    all*.exclude group: 'commons-dbcp'
    all*.exclude group: 'commons-pool'
    all*.exclude group: 'excalibur-component'
    all*.exclude group: 'excalibur-instrument'
    all*.exclude group: 'excalibur-logger'
    all*.exclude group: 'excalibur-pool'
    all*.exclude group: 'fop'
    all*.exclude group: 'geronimo-spec'
    all*.exclude group: 'hsqldb'
    all*.exclude group: 'imagej'
    all*.exclude group: 'jamon'
    all*.exclude group: 'jakarta-regexp'
    all*.exclude group: 'org.apache.geronimo.specs'
    all*.exclude group: 'servletapi'
    all*.exclude group: 'velocity'
    all*.exclude group: 'xmlrpc'
    all*.exclude group: 'ant', module: 'ant'
    all*.exclude group: 'commons-email', module: 'commons-email'
    all*.exclude group: 'edu.ucar', module: 'netcdf'
    all*.exclude group: 'javax.jms', module: 'jms'
    all*.exclude group: 'javax.mail', module: 'mail'
    all*.exclude group: 'javax.servlet', module: 'servlet-api'
    all*.exclude group: 'javax.sql', module: 'jdbc-stdext'
    all*.exclude group: 'javax.transaction', module: 'jta'
    all*.exclude group: 'jdbc', module: 'jdbc'
    all*.exclude group: 'jms', module: 'jms'
    all*.exclude group: 'jython', module: 'jython'
    all*.exclude group: 'org.nrg', module: 'nrg'
    all*.exclude group: 'net.sf.saxon', module: 'saxon'
    all*.exclude group: 'stax', module: 'stax-api'
    all*.exclude group: 'xml-apis', module: 'xml-apis'
    all*.exclude module: 'commons-beanutils-core'
    all*.exclude module: 'log4j-slf4j-impl'
    all*.exclude module: 'pipelineCNDAXNAT'
    all*.exclude module: 'slf4j-simple'
}

dependencies {
    // NRG dependencies first.
    compile "org.nrg.xnat:spawner:${vXnat}"
    compile("org.nrg.xnat:xnat-data-models:${vXnat}"){
        transitive = false
    }
    compile "org.nrg.xdat:core:${vXnat}"
    compile "org.nrg:framework:${vXnat}"
    compile "org.nrg:transaction:${vXnat}"
    compile "org.nrg:prefs:${vXnat}"
    compile "org.nrg:config:${vXnat}"
    compile "org.nrg:automation:${vXnat}"
    compile "org.nrg:dicomtools:${vXnat}"
    compile "org.nrg:anonymize:${vXnat}"
    compile "org.nrg:mail:${vXnat}"
    compile "org.nrg:notify:${vXnat}"

    compile "org.nrg:dicom-xnat-mx:1.7.0-SNAPSHOT"
    compile "org.nrg:dicom-xnat-sop:1.7.0-SNAPSHOT"
    compile "org.nrg:dicom-xnat-util:1.7.0-SNAPSHOT"
    compile "org.nrg:ecat4xnat:1.7.0-SNAPSHOT"
    compile "org.nrg:DicomDB:4.1.0"
    compile "org.nrg:ExtAttr:4.1.0"
    compile "org.nrg:DicomEdit:4.2.1"
    compile "org.nrg:DicomImageUtils:${vXnat}"
    compile "org.nrg:DicomUtils:1.3.1"
    compile "org.nrg:PrearcImporter:${vXnat}"
    compile "org.nrg:SessionBuilders:${vXnat}"

    compile "org.nrg:pipelineBase:1.0"
    compile "org.nrg:pipelineBuild:1.0"
    compile "org.nrg:pipelineWorkflow:1.0"
    compile "org.nrg:pipelineXNAT:1.0"
    compile "org.nrg.xnat.pipeline:client:${vXnatPipeline}"
    compile "org.nrg.xnat.pipeline:xnat_pipeline:${vXnatPipeline}"
    compile "org.nrg.xnat.pipeline:xnat_tools:${vXnatPipeline}"

    compile "org.nrg:plexiviewer:${vXnat}"

    compile "dcm4che:dcm4che-core:2.0.25"
    compile "dcm4che:dcm4che-image:2.0.25"
    compile "dcm4che:dcm4che-imageio:2.0.25"
    compile "dcm4che:dcm4che-imageio-rle:2.0.25"
    compile "dcm4che:dcm4che-iod:2.0.25"
    compile "dcm4che:dcm4che-net:2.0.25"

    compile "org.springframework:spring-aop:${vSpring}"
    compile "org.springframework:spring-beans:${vSpring}"
    compile "org.springframework:spring-context-support:${vSpring}"
    compile "org.springframework:spring-context:${vSpring}"
    compile "org.springframework:spring-core:${vSpring}"
    compile "org.springframework:spring-jdbc:${vSpring}"
    compile "org.springframework:spring-jms:${vSpring}"
    compile "org.springframework:spring-messaging:${vSpring}"
    compile "org.springframework:spring-orm:${vSpring}"
    compile "org.springframework:spring-oxm:${vSpring}"
    compile "org.springframework:spring-tx:${vSpring}"
    compile "org.springframework:spring-web:${vSpring}"
    compile "org.springframework:spring-webmvc:${vSpring}"

    compile "io.springfox:springfox-swagger2:${vSwagger}"
    compile "io.springfox:springfox-swagger-ui:${vSwagger}"

    compile "org.springframework.security:spring-security-acl:${vSpringSecurity}"
    compile "org.springframework.security:spring-security-aspects:${vSpringSecurity}"
    compile "org.springframework.security:spring-security-config:${vSpringSecurity}"
    compile "org.springframework.security:spring-security-ldap:${vSpringSecurity}"
    compile "org.springframework.security:spring-security-taglibs:${vSpringSecurity}"
    compile "org.springframework.ldap:spring-ldap-core:2.0.4.RELEASE"

    compile "org.hibernate:hibernate-core:${vHibernate}"
    compile "org.hibernate:hibernate-ehcache:${vHibernate}"
    compile "org.hibernate:hibernate-validator:4.3.2.Final"
    compile "org.hibernate:hibernate-envers:4.3.11.Final"
    compile "net.sf.ehcache:ehcache-core:${vEhcache}"

    compile "com.noelios.restlet:com.noelios.restlet:1.1.10"
    compile "com.noelios.restlet:com.noelios.restlet.ext.servlet:1.1.10"
    compile "org.restlet:org.restlet.ext.fileupload:1.1.10"

    compile "com.fasterxml.jackson.core:jackson-annotations:${vJackson}"
    compile "com.fasterxml.jackson.core:jackson-core:${vJackson}"
    compile "com.fasterxml.jackson.core:jackson-databind:${vJackson}"
    compile "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${vJackson}"
    compile "org.json:json:20151123"
    compile "xerces:xercesImpl:2.11.0"

    compile "commons-beanutils:commons-beanutils:1.9.2"
    compile "commons-codec:commons-codec:1.10"
    compile "commons-collections:commons-collections:3.2.2"
    compile "commons-configuration:commons-configuration:1.10"
    compile "commons-digester:commons-digester:1.8.1"
    compile "commons-discovery:commons-discovery:0.5"
    compile "commons-fileupload:commons-fileupload:1.3.1"
    compile "commons-net:commons-net:3.4"

    compile "org.apache.commons:commons-email:1.4"
    compile "org.apache.commons:commons-math:2.2"

    compile "org.apache.httpcomponents:httpclient:4.5.1"
    compile "org.apache.httpcomponents:httpcore:4.4.4"
    compile "org.apache.httpcomponents:httpcore-nio:4.4.4"

    compile "org.codehaus.groovy:groovy-all:${vGroovy}"
    compile "org.python:jython-standalone:${vJython}"

    compile "net.sourceforge.saxon:saxon:${vSaxon}"

    compile "nl.bitwalker:UserAgentUtils:1.2.4"
    compile "com.twmacinta:fast-md5:2.7.1"
    compile "com.h2database:h2:1.4.191"
    compile "com.lowagie:itext:4.2.1"
    compile "net.java.dev.msv:msv-core:2013.6.1"
    compile "gnu.getopt:java-getopt:1.0.13"
    compile "org.quartz-scheduler:quartz:2.2.2"
    compile "org.reflections:reflections:0.9.10"
    compile "org.apache.xmlbeans:xmlbeans:2.6.0"
    compile "org.apache.xmlbeans:xmlbeans-xpath:2.6.0"
    compile "org.apache.xbean:xbean-spring:4.5"
    compile "net.java.dev.msv:xsdlib:2013.6.1"

    compile "org.postgresql:postgresql:${vPostgreSQL}"

    compile "org.slf4j:slf4j-api:${vSlf4j}"
    compile "org.slf4j:slf4j-log4j12:${vSlf4j}"
    compile "org.slf4j:jul-to-slf4j:${vSlf4j}"
    compile "log4j:log4j:${vLog4j}"
    compile "javax.servlet:jstl:1.2"
    compile "javax.mail:javax.mail-api:1.5.5"
    compile 'com.google.code.gson:gson:2.6.2'

    runtime "org.apache.activemq:activemq-core:5.7.0"
    runtime "ant:ant:1.6.5"
    runtime "axis:axis-ant:1.4"
    runtime "axis:axis-schema:1.3"
    runtime "cglib:cglib:3.2.0"
    runtime "org.hsqldb:hsqldb:1.8.0.10"
    runtime "org.codehaus.groovy.modules.http-builder:http-builder:0.7.2"
    runtime "net.imagej:ij:1.50e"
    runtime "net.bull.javamelody:javamelody-core:1.58.0"
    runtime "org.javassist:javassist:3.20.0-GA"

    providedCompile "javax.servlet:javax.servlet-api:${vServletApi}"

    tomcat "org.apache.tomcat.embed:tomcat-embed-core:${vTomcat}",
            "org.apache.tomcat.embed:tomcat-embed-logging-juli:${vTomcat}",
            "org.apache.tomcat.embed:tomcat-embed-jasper:${vTomcat}"

    cargo "org.codehaus.cargo:cargo-core-uberjar:${vCargo}",
          "org.codehaus.cargo:cargo-ant:${vCargo}"

    testCompile "junit:junit:${vJunit}"
    testCompile "org.springframework:spring-test:${vSpring}"
}