plugins {
    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 = waterManagerVersion
sourceCompatibility = jdkVersion

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

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

println("Build version: $waterManagerVersion")
repositories {
    mavenCentral()
}

bootJar {
    mainClassName = startClass
    manifest {
        attributes('Water-Version': waterManagerVersion)
    }
}

jar {
    baseName = "watermanager"
}

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

docker.dependsOn(jar)

dependencies {
    compile(
            'net.sf.json-lib:json-lib:2.4:jdk15'
    )
    compile "me.nimavat:shortid:1.0.1.RC1"
    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-starter-security'
//    implementation 'org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2.0.1.RELEASE'
    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:2.1.5.RELEASE'
//    implementation 'org.springframework.security.oauth:spring-security-oauth2'
    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 'com.github.penggle:kaptcha:2.3.2'
    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 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 'net.javacrumbs.shedlock:shedlock-spring:2.5.0'
    implementation 'net.javacrumbs.shedlock:shedlock-provider-redis-spring:2.5.0'
    implementation files('libs/ojdbc6.jar')

    annotationProcessor 'org.projectlombok:lombok:1.18.8'
    compileOnly 'org.projectlombok:lombok:1.18.8'
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
    
    compile 'com.supwisdom:payapi-sdk:1.0.10'
    
//    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    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'
    implementation 'org.hamcrest:hamcrest:2.1'
}

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

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