dependencies {
        def tomcatVersion = '7.0.54'
        tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
               "org.apache.tomcat.embed:tomcat-embed-logging-log4j:${tomcatVersion}" // NOT tomcat-embed-logging-juli (http://stackoverflow.com/questions/23963049/classcircularityerror-java-util-logging-logrecord-running-gradle-webapp-with-ja)
        tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
            exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
        }
        tomcat "org.apache.tomcat:tomcat-dbcp:${tomcatVersion}"

    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")

    providedCompile(
//              [group: 'javax.servlet', name: 'servlet-api', version: '2.5'],
            )

    compile(
               // [group: 'ch.vorburger.mariaDB4j', name: 'mariaDB4j', version: '2.1.3'],

                [group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion],
                [group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: springBootVersion],
                [group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: springBootVersion],

                [group: 'org.springframework', name: 'spring-context-support', version: springVersion],
				
	       		[group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: springOauthVersion],

                [group: 'javax.ws.rs', name: 'jsr311-api', version: '1.1.1'],
                [group: 'com.sun.jersey', name: 'jersey-core', version: jerseyVersion],
                [group: 'com.sun.jersey', name: 'jersey-servlet', version: jerseyVersion],
                [group: 'com.sun.jersey', name: 'jersey-server', version: jerseyVersion],
                [group: 'com.sun.jersey', name: 'jersey-json', version: jerseyVersion],
                [group: 'com.sun.jersey.contribs', name: 'jersey-spring', version: jerseyVersion],
                [group: 'com.sun.jersey.contribs', name: 'jersey-multipart', version: jerseyVersion],

                [group: 'com.squareup.retrofit', name: 'retrofit', version: '1.6.1'],
                [group: 'com.squareup.okhttp', name: 'okhttp', version: '2.0.0'],
                [group: 'com.squareup.okhttp', name: 'okhttp-urlconnection', version: '2.0.0'],


                [group: 'com.google.code.gson', name: 'gson', version: '2.2.4'],
                [group: 'com.google.guava', name: 'guava', version: '15.0'],

                [group: 'joda-time', name: 'joda-time', version: '2.4'],
                //[group: 'net.sourceforge.javacsv', name: 'javacsv', version: '2.0'],
                [group: 'org.apache.commons', name: 'commons-email', version: '1.3.3'],
                [group: 'org.apache.commons', name: 'commons-lang3', version: '3.3.2'],

                // no slf4j & logback here (anymore), as spring-boot-starter-logging already brings this now, better assembled (log4j-over-slf4j was originally forgotten here)

                //[group: 'mysql', name: 'mysql-connector-java', version: '5.1.27'],
                [group: 'org.drizzle.jdbc', name: 'drizzle-jdbc', version: '1.3'],
               // [group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: tomcatVersion],


                [group: 'org.apache.poi',name: 'poi', version: '3.9'],
                [group: 'org.apache.poi',name: 'poi-ooxml', version: '3.9'],
                [group: 'org.apache.poi',name: 'poi-ooxml-schemas', version: '3.9'],

                [group: 'com.lowagie', name: 'itext', version: '2.1.7'],
                [group: 'com.lowagie', name: 'itext-rtf', version: '2.1.7'],
                [group: 'org.mnode.ical4j', name: 'ical4j', version: '1.0.4'],
                [group: 'com.googlecode.flyway', name: 'flyway-core', version: '2.1.1'],
                [group: 'org.quartz-scheduler', name: 'quartz', version: '2.1.7'],
                [group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.2.1'],
                [group: 'net.sf.ehcache', name: 'ehcache', version: '2.7.2'],
                [group: 'com.github.spullara.mustache.java', name: 'compiler', version: '0.8.12'],
                [group: 'com.jayway.jsonpath', name: 'json-path', version: '0.9.1'],

                // Although fineract (at the time of writing) doesn't have any compile time dep. on this,
                // it's useful to have this for the Spring Boot TestRestTemplate http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-rest-templates-test-utility
                [group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.5'],
                // Once we've switched to Java 8 this dep can be removed.
                [group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0']
     )
     testCompile 'junit:junit:4.11',
                 'junit:junit-dep:4.11',
                 'org.mockito:mockito-core:1.9.5',
                 'com.jayway.restassured:rest-assured:2.3.3',
                 [group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: springBootVersion]

}
