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

ext.versions = [
        frameworkapi : '0.1.0-BUILD-SNAPSHOT',
        frameworklang : '0.1.0-BUILD-SNAPSHOT',
        frameworkasync : '0.1.0-BUILD-SNAPSHOT',
        frameworkcassandra : '0.1.0-BUILD-SNAPSHOT',
        frameworkmariadb : '0.1.0-BUILD-SNAPSHOT',
        frameworkcommand : '0.1.0-BUILD-SNAPSHOT',
        frameworktest: '0.1.0-BUILD-SNAPSHOT',
        frameworkanubis: '0.1.0-BUILD-SNAPSHOT',
        validator : '5.3.0.Final'
]

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

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

repositories {
    jcenter()
    mavenLocal()
}

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']
    )
}

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'
}