buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE")
    }
}

plugins {
    id 'groovy'
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.11'
    id 'net.ltgt.apt' version '0.10'
    id "org.sonarqube" version "2.6"
    id 'org.unbroken-dome.test-sets' version '1.4.5'
    id 'war'
}

apply plugin: 'org.springframework.boot'

description = 'Pandamonium Theorem Prover'

group 'edu.msudenver.tsp'
version '1.0'

ext['slf4j.version'] = '1.7.22'
ext['classmate.version'] = '1.3.1'
ext['joda-time.version'] = '2.9.7'

def branch = 'git symbolic-ref --short HEAD'.execute().text.trim()

sonarqube {
    properties {
        property "sonar.projectName", 'Pandamonium Theorem Prover'
    }
}

allprojects {
    sonarqube {
        properties {
            property "sonar.host.url", "https://sonarcloud.io"
            property "sonar.projectKey", "atusa17_ptp"
            property "sonar.organization", "atusa17-github"
            property "sonar.login", "9dcc611cd79f175459248b053b25450e36e38463"
        }
    }
    apply plugin: 'java'
    apply plugin: 'jacoco'
    apply plugin: 'org.unbroken-dome.test-sets'
    apply plugin: 'idea'
    apply plugin: 'io.spring.dependency-management'
}

subprojects {
    apply plugin: 'java'
    repositories {
        mavenCentral()
    }

    dependencies {
        compile 'org.apache.commons:commons-lang3:3.5'
        // The production code uses the SLF4J logging API at compile time
        compile 'org.slf4j:slf4j-api:1.7.21'
        compile "joda-time:joda-time:2.2"
        compile('org.springframework:spring-context:5.0.9.RELEASE')

        compileOnly 'org.projectlombok:lombok:1.18.4'

        testCompile group: 'junit', name: 'junit', version: '4.11'
        testCompile group: 'junit', name: 'junit', version: '4.12'
        testCompile('org.mockito:mockito-core:1.10.19') {exclude(group: 'org.hamcrest')}
    }

    test {
        if (System.properties['test.profile'] != 'integrationTest') {
            exclude '**/*integrationTest*'
        } else {
            exclude '**/*edu/*'
        }
    }

    testSets {
        unitTest
        integrationTest
    }
}

bootJar {
    baseName = 'gs-spring-boot'
    version =  '0.1.0'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    compile 'org.codehaus.groovy:groovy-all:2.3.11'
    compile 'org.apache.commons:commons-lang3:3.5'
    // The production code uses the SLF4J logging API at compile time
    compile 'org.slf4j:slf4j-api:1.7.22'
    compile "joda-time:joda-time:2.2"
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.5.RELEASE'
    compile('org.springframework.boot:spring-boot-starter-web','org.apache.tomcat.embed:tomcat-embed-jasper'
            ,'javax.servlet:jstl')

    testCompile 'javax.el:javax.el-api:3.0.0'
    testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.1.3.RELEASE'
    testCompile group: 'junit', name: 'junit', version: '4.12'
    testCompile "org.springframework:spring-test:5.0.9.RELEASE"
    testCompile('org.mockito:mockito-core:1.10.19') {exclude(group: 'org.hamcrest')}

    compileOnly 'org.projectlombok:lombok:1.18.4'

    apt 'org.projectlombok:lombok:1.18.4'
}

project(':persistence') {
    dependencies {
        compile project(':utilities')
    }
}

test {
    if (System.properties['test.profile'] != 'integrationTest') {
        exclude '**/*integrationTest*'
    } else {
        exclude '**/*edu/*'
    }
}

testSets {
    unitTest
    integrationTest
}

wrapper {
    gradleVersion = '5.2.1'
    distributionType = Wrapper.DistributionType.ALL
}