plugins {
    id "org.springframework.boot" version "2.1.6.RELEASE"
    id 'org.jetbrains.kotlin.jvm' version '1.3.31'
    id 'org.jetbrains.kotlin.plugin.jpa' version '1.3.31'
    id 'org.jetbrains.kotlin.plugin.spring' version '1.3.31'
    id "com.palantir.git-version" version "0.12.0-rc2"
    id 'com.palantir.docker' version '0.22.1'
}

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

group = 'com.supwisdom'
version = '1.0'
sourceCompatibility = jdkVersion

doorVersion = gitVersion()
repositories {
    mavenCentral()

    maven {
        url "http://ykt-nx.supwisdom.com/repository/ecard-repo/"
        credentials {
            username 'ecard'
            password 'Ecard4SUP'
        }
    }
}

def startClass = 'com.supwisdom.dlpay.DoorApplicationKt'

println("Build version: $doorVersion")

bootJar {
    mainClassName = startClass
    manifest {
        attributes('Door-Version': doorVersion)
    }
}

jar {
    baseName = "door"
}

docker {
    name 'harbor.supwisdom.com/dali/door:' + version
    println(jar.archivePath)
    files jar.archivePath
}

docker.dependsOn(jar)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-autoconfigure'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2.0.1.RELEASE'
    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:1.1.6.RELEASE'
    implementation 'org.jetbrains.kotlin:kotlin-reflect'
    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'

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

    implementation 'org.postgresql:postgresql:42.2.5'
    implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
    implementation 'com.jcabi:jcabi-manifests:1.1'
    implementation 'org.bitbucket.b_c:jose4j:0.6.3'
    implementation 'io.github.microutils:kotlin-logging:1.6.26'
    implementation 'org.slf4j:slf4j-parent:1.7.26'
    implementation 'redis.clients:jedis:2.9.3'
    implementation group: 'commons-lang', name:'commons-lang',version: '2.5'
    implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
    implementation group: 'com.sun.jersey', name: 'jersey-client', version: '1.19'
    implementation group: 'javax.servlet', name: 'jstl', version: '1.2'
    implementation group: 'taglibs', name: 'standard', version: '1.1.2'
    implementation group: 'commons-codec', name: 'commons-codec', version: '1.6'
    implementation files('libs/ojdbc6.jar')

    implementation 'cn.afterturn:easypoi-web:3.0.3'
    implementation 'cn.afterturn:easypoi-base:3.0.3'

    implementation 'com.github.penggle:kaptcha:2.3.2'


    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"

    compile 'com.supwisdom:payapi-sdk:e4bf762'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'io.rest-assured:rest-assured:3.3.0'
    testImplementation 'io.rest-assured:spring-mock-mvc:3.3.0'
    testImplementation 'org.hamcrest:hamcrest:2.1'
}

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

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