buildscript {
    ext {
        versionSpringBoot = '1.5.10.RELEASE'
    }

    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        classpath group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: versionSpringBoot
    }
}

group 'ru.ulstu'
version '0.1.0-SNAPSHOT'

apply plugin: 'application'
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'checkstyle'

mainClassName = 'ru.ulstu.NgTrackerApplication'

build.dependsOn checkstyleMain
bootRun.dependsOn checkstyleMain

sourceCompatibility = 1.8
targetCompatibility = 1.8

checkstyle {

    project.ext.checkstyleVersion = '8.8'
    project.ext.sevntuChecksVersion = '1.28.0'

    repositories {
        mavenLocal()
        mavenCentral()
    }

    ignoreFailures = false
    showViolations = true
    maxErrors = 1
    maxWarnings = 1
    configFile = file("${project.rootDir}/checkstyle.xml")

    //sourceSets = [sourceSets.main]
    //showViolations = true
    //reportsDir = file("$project.buildDir/checkstyleReports")
    //configProperties = ['baseDir': "$project.projectDir"]

    //https://discuss.gradle.org/t/some-checkstyle-rules-dont-work-in-gradle/16102/4
    checkstyleMain {
        source = sourceSets.main.allSource
    }

    configurations {
        checkstyle
    }

    dependencies{
        assert project.hasProperty("checkstyleVersion")

        checkstyle "com.puppycrawl.tools:checkstyle:${checkstyleVersion}"
        checkstyle "com.github.sevntu-checkstyle:sevntu-checks:${sevntuChecksVersion}"
    }
}

task health(dependsOn: [
        'checkstyleMain'
])


jar {
    baseName = 'ng-tracker'
}

compileJava {
    options.encoding = "UTF-8"
}

repositories {
    mavenLocal()
    mavenCentral()
}

configurations {
    compile.exclude module: "spring-boot-starter-tomcat"
    compile.exclude module: "bcmail-jdk14"
    compile.exclude module: "bcprov-jdk14"
    compile.exclude module: "bctsp-jdk14"
}

dependencies {
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-security'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-jetty'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf'
    compile group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity4'
    compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-afterburner'
    compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-hibernate5'

    compile group: 'postgresql', name: 'postgresql', version: '9.1-901.jdbc4'

    compile group: 'org.liquibase', name: 'liquibase-core', version: '3.5.3'
    compile group: 'com.mattbertolini', name: 'liquibase-slf4j', version: '2.0.0'

    compile group: 'org.apache.poi', name: 'poi', version: '3.9'
    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.9'

    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'

    compile group: 'org.webjars', name: 'bootstrap', version: '4.1.0'
    compile group: 'org.webjars', name: 'jquery', version: '3.3.1-1'
    compile group: 'org.webjars.npm', name: 'jquery.easing', version: '1.4.1'
    compile group: 'org.webjars', name: 'font-awesome', version: '4.7.0'

    compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.5.0'
    compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.5.0'

    testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test'
}