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.git-version" version "0.12.0-rc2"
    id 'com.palantir.docker' version '0.22.1'
}


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

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

restaurantVersion = gitVersion()

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

bootJar {
    mainClassName = startClass
    manifest {
        attributes('Restaurant-Version': restaurantVersion)
    }
}

jar {
    baseName = 'restaurant'
}

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

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


dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    compile group: 'org.apache.poi', name: 'poi', version: '3.10.1'
    compile group: 'org.apache.poi', name: 'poi-examples', version: '3.10.1'
    compile group: 'org.apache.poi', name: 'poi-excelant', version: '3.10.1'
    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.10.1'
    compile group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '3.10.1'
    compile group: 'org.apache.poi', name: 'poi-scratchpad', version: '3.10.1'
    compile 'com.supwisdom:payapi-sdk:1.0.9-1-gb3cd8c8'
    compile group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: '2.3.4.RELEASE'


    implementation 'com.github.penggle:kaptcha:2.3.2'
    implementation 'org.springframework.boot:spring-boot-devtools'
    implementation 'org.springframework.boot:spring-boot-starter-tomcat'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.security:spring-security-oauth2-client'
    implementation 'org.springframework.security:spring-security-oauth2-jose'
    implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.9.9'
    implementation 'org.springframework.boot:spring-boot-autoconfigure'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.session:spring-session-data-redis:2.0.10.RELEASE'
    implementation 'org.jetbrains.kotlin:kotlin-reflect'
    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
    implementation 'net.javacrumbs.shedlock:shedlock-spring:2.5.0'
    implementation 'net.javacrumbs.shedlock:shedlock-provider-redis-spring:2.5.0'
    implementation 'org.projectlombok:lombok:1.18.10'

    implementation 'org.postgresql:postgresql:42.2.5'
    implementation 'com.jcabi:jcabi-manifests:1.1'
    implementation 'org.bitbucket.b_c:jose4j:0.6.3'
    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
    implementation 'org.springframework.social:spring-social-web:1.1.6.RELEASE'
    implementation 'io.github.microutils:kotlin-logging:1.6.26'
    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 'org.apache.commons:commons-lang3:3.9'
    implementation files('libs/ojdbc6.jar')


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

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