plugins {
    id 'java'
    id 'org.springframework.boot'
    id 'org.jetbrains.kotlin.jvm'
    id 'org.jetbrains.kotlin.plugin.jpa' version '1.3.31'
    id 'org.jetbrains.kotlin.plugin.spring'
    id "com.palantir.git-version"
    id 'com.palantir.docker'
}

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

payapiVersion = gitVersion()

group = rootProject.group
version = '1'
sourceCompatibility = jdkVersion
def payapiStartClass = 'com.supwisdom.dlpay.PayApiApplicationKt'

println("Build version: $payapiVersion")

bootJar {
    mainClassName = payapiStartClass
    manifest {
        attributes('Payapi-Version': payapiVersion)
    }
}

jar {
    baseName = 'payapi'
}

docker {
    name 'harbor.supwisdom.com/dali/payapi:' + 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-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:2.1.5.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 'commons-codec:commons-codec:1.12'
    implementation 'org.apache.commons:commons-lang3:3.9'

    implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery:2.1.2.RELEASE'

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

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

    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 'com.github.penggle:kaptcha:2.3.2'
    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 'commons-dbcp:commons-dbcp:1.4'

    implementation project(':payapi-common')

    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
    annotationProcessor 'org.projectlombok:lombok:1.18.8'
    compileOnly 'org.projectlombok:lombok:1.18.8'

//    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'
    testImplementation 'org.hamcrest:hamcrest:2.1'
}

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

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