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 'net.sourceforge.jexcelapi:jxl:2.6.12'
    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.13'
    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"
    annotationProcessor 'org.projectlombok:lombok:1.18.8'
    compileOnly 'org.projectlombok:lombok:1.18.8'

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

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