buildscript {
    ext {
        springBootVersion = '1.4.1.RELEASE'
    }

    repositories {
        jcenter()
    }

    dependencies {
        classpath ("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

plugins {
    id 'com.github.hierynomus.license' version '0.13.1'
}

apply from: '../shared.gradle'

apply plugin: 'spring-boot'

springBoot {
    executable = true
    classifier = 'boot'
}

dependencies {
    compile(
            [group: 'org.springframework.cloud', name: 'spring-cloud-starter-config'],
            [group: 'org.springframework.cloud', name: 'spring-cloud-starter-eureka'],
            [group: 'org.springframework.boot', name: 'spring-boot-starter-jetty'],
            [group: 'org.hibernate', name: 'hibernate-validator', version: versions.hibernatevalidator],
            [group: 'io.mifos.core', name: 'lang', version: versions.frameworklang],
            [group: 'io.mifos.core', name: 'async', version: versions.frameworkasync],
            [group: 'io.mifos.core', name: 'cassandra', version: versions.frameworkcassandra],
            [group: 'io.mifos.core', name: 'command', version: versions.frameworkcommand],
            [group: 'io.jsonwebtoken', name: 'jjwt', version: versions.jjwt],
            [group: 'io.mifos.tools', name: 'crypto', version: versions.frameworkcrypto],
            [group: 'io.mifos.identity', name: 'api', version: rootProject.version],
            [group: 'io.mifos.anubis', name: 'api', version: versions.frameworkanubis],
            [group: 'io.mifos.anubis', name: 'library', version: versions.frameworkanubis],
    )
}

publishToMavenLocal.dependsOn bootRepackage


publishing {
    publications {
        service(MavenPublication) {
            from components.java
            groupId project.group
            artifactId project.name
            version project.version
        }
        bootService(MavenPublication) {
            // "boot" jar
            artifact ("$buildDir/libs/$project.name-$version-boot.jar")
            groupId project.group
            artifactId ("$project.name-boot")
            version project.version
        }
    }
}