group 'io.mifos.identity'
version '0.1.0-BUILD-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'maven-publish'
apply plugin: 'io.spring.dependency-management'


ext.versions = [
        frameworkcrypto    : '0.1.0-BUILD-SNAPSHOT',
        frameworkanubis    : '0.1.0-BUILD-SNAPSHOT',
        frameworkapi       : '0.1.0-BUILD-SNAPSHOT',
        frameworktest      : '0.1.0-BUILD-SNAPSHOT',
        frameworklang      : '0.1.0-BUILD-SNAPSHOT',
        frameworkasync     : '0.1.0-BUILD-SNAPSHOT',
        frameworkcassandra : '0.1.0-BUILD-SNAPSHOT',
        frameworkcommand   : '0.1.0-BUILD-SNAPSHOT',
        jjwt               : '0.6.0',
        hibernatevalidator : '5.3.0.Final'
]

tasks.withType(JavaCompile) {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

repositories {
    jcenter()
    mavenLocal()
}

configurations {
    compile.exclude group: 'io.mifos.core', module: 'mariadb'
    compile.exclude group: 'ch.vorburger', module: 'mariaDB4j'
}

dependencyManagement {
    imports {
        mavenBom 'io.spring.platform:platform-bom:Athens-RELEASE'
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Camden.SR1'
    }
}

// override certain dependency provided by Spring platform using newer releases
ext['cassandra.version'] = '3.6'
ext['cassandra-driver.version'] = '3.1.2'
ext['activemq.version'] = '5.13.2'
ext['spring-data-releasetrain.version'] = 'Gosling-SR2A'

dependencies {
    compile(
            [group: 'com.google.code.findbugs', name: 'jsr305']
    )

    testCompile(
            [group: 'org.springframework.boot', name: 'spring-boot-starter-test'],
            [group: 'io.mifos.core', name: 'test', version: versions.frameworktest],
    )
}

jar {
    from sourceSets.main.allSource
}

license {
    header rootProject.file('../HEADER')
    strictCheck true
    mapping {
        java = 'SLASHSTAR_STYLE'
        xml = 'XML_STYLE'
        yml = 'SCRIPT_STYLE'
        yaml = 'SCRIPT_STYLE'
    }
    ext.year = Calendar.getInstance().get(Calendar.YEAR)
    ext.name = 'The Mifos Initiative'
}

task ci(dependsOn: ['clean', 'test', 'publish'])