plugins {
    id "java"
    id 'org.springframework.boot'
    id "org.jetbrains.kotlin.jvm"
    id "org.jetbrains.kotlin.plugin.spring"
    id 'com.palantir.docker'
}

apply plugin: 'io.spring.dependency-management'
apply plugin: 'kotlin'

def ynrccStartClass = "com.supwisdom.agent.YnrccAgentApplication"

println("Build version: $buildVersion")

bootJar {
    mainClassName = ynrccStartClass
    manifest {
        attributes('YnrccAgent-Version': buildVersion)
    }
}

compileKotlin {
    kotlinOptions {
        freeCompilerArgs = ["-Xjsr305=strict"]
        jvmTarget = jdkVersion
    }
}

compileTestKotlin {
    kotlinOptions {
        freeCompilerArgs = ["-Xjsr305=strict"]
        jvmTarget = jdkVersion
    }
}

docker {
    def imageVersion
    if (details.gitHashFull.startsWith(details.lastTag) || !details.isCleanTag) {
        imageVersion = 'dev'
    } else {
        imageVersion = details.lastTag
    }
    println("Docker image tag : ${imageVersion}")
    name "${dockerRegistry}/ynrcc:${imageVersion}"
    println(jar.archiveFile.get())
    files jar.archiveFile.get()
}

docker.dependsOn(jar)

dependencies {

    implementation project(":payapi-common")

    implementation "org.springframework.boot:spring-boot-starter-web"
    implementation "org.springframework.boot:spring-boot-autoconfigure"
    implementation "javax.ws.rs:javax.ws.rs-api:${javaxWSRSVersion}"

    implementation "org.dom4j:dom4j:${dom4jVersion}"
    implementation "commons-beanutils:commons-beanutils:${beanutilsVersion}"
    implementation "commons-net:commons-net:${commonNetVersion}"

    runtime("org.springframework.boot:spring-boot-devtools")
}

