plugins {
    id 'war'
    id 'org.springframework.boot'
    id 'org.jetbrains.kotlin.jvm'
    id 'org.jetbrains.kotlin.plugin.jpa'
    id 'org.jetbrains.kotlin.plugin.spring'
}

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

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

repositories {
    mavenCentral()
}

war {
    manifest {
        attributes('Payapi-Version': rootProject.version)
        writeTo(project.buildDir.toString() + "/classes/MATE-INF.MF")
    }
}

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'

    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'
    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 '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.6'
//    implementation 'org.flywaydb:flyway-core'
//    implementation group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.1'
    implementation group: 'log4j', name: 'log4j', version: '1.2.16'
    implementation files('libs/ojdbc6.jar')


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

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