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

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

def payapiStartClass = "com.supwisdom.dlpay.PayApiApplicationKt"

println("Build version: $buildVersion")

bootJar {
    enabled = true
    mainClassName = payapiStartClass
    def standalone = ""
    if (rootProject.hasProperty("no-multi-tenant")) {
        standalone = "-stangalone-"
    }
    archiveFileName = "${project.name}${standalone}-${buildVersion}.${archiveExtension.getOrElse('.jar')}"
    manifest {
        attributes("Payapi-Version": buildVersion,
                "Payapi-Buildtime": buildTime)
    }
}

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}/payapi:${imageVersion}"
    println(jar.archiveFile.get())
    files jar.archiveFile.get()
}

docker.dependsOn(jar)

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
}

repositories {
    maven {
        url "http://ykt-nx.supwisdom.com/repository/ecard-repo/"
        credentials {
            username "${nxUser}"
            password "${nxPassword}"
        }
    }
}

dependencies {
    implementation project(":payapi-common")

    implementation "org.springframework.boot:spring-boot-starter-web"
    implementation "org.springframework.boot:spring-boot-starter-security"
    implementation "org.springframework.boot:spring-boot-starter-cache"
    implementation "org.springframework.boot:spring-boot-autoconfigure"
    implementation "org.springframework.security:spring-security-oauth2-jose"
    implementation "org.springframework.security:spring-security-oauth2-client"
    implementation "org.springframework.security:spring-security-oauth2-jose"
    implementation "org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure"
    implementation "org.springframework.boot:spring-boot-starter-thymeleaf"
    implementation "org.springframework.session:spring-session-data-redis"
    implementation "org.springframework.boot:spring-boot-starter-cache"
    implementation "org.springframework.social:spring-social-web:${springSocialVersion}"
    implementation "org.apache.kafka:kafka-streams"
    implementation "org.springframework.kafka:spring-kafka"

    implementation "org.springframework.cloud:spring-cloud-starter"
    implementation "org.springframework.cloud:spring-cloud-starter-consul-discovery"
    implementation "org.springframework.cloud:spring-cloud-starter-netflix-hystrix"
    implementation "org.springframework.cloud:spring-cloud-starter-netflix-hystrix-dashboard"

    developmentOnly("org.springframework.boot:spring-boot-devtools")

    implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity5"

    implementation "org.apache.commons:commons-lang3:${lang3Version}"
    implementation "net.javacrumbs.shedlock:shedlock-spring:${shedlockVersion}"
    implementation "net.javacrumbs.shedlock:shedlock-provider-redis-spring:${shedlockVersion}"

    implementation "com.supwisdom:multi-tenant-core:${multiTenantLibVersion}"
    implementation "com.supwisdom:multi-tenant-datasource:${multiTenantLibVersion}"

    implementation "org.bitbucket.b_c:jose4j:${jose4jVersion}"
    implementation files("libs/masmgc.sdk.sms-0.0.1-SNAPSHOT.jar")
    implementation "commons-beanutils:commons-beanutils:${beanutilsVersion}"
    /*支付宝SDK*/
    implementation "com.alipay.sdk:alipay-sdk-java:${alipaySDKVersion}"

    implementation "com.github.penggle:kaptcha:${kaptchaVersion}"
    implementation "com.sun.jersey:jersey-client:${jerseyClientVersion}"

}

