buildscript {
  ext {
    javaVersion = "1.8"
    javaeeVersion = "8.0"
    vavrVersion = "0.9.2"
    slf4jVersion = "1.7.25"
    lombokVersion = "1.16.20"
    junitJupiterVersion = "5.0.2"
    junitPlatformVersion = "1.0.2"
    hibernateCoreVersion = "4.2.18.Final"
  }
  repositories {
    mavenLocal()
    mavenCentral()
  }
  dependencies {
    classpath "org.junit.platform:junit-platform-gradle-plugin:$junitPlatformVersion"
  }
}

plugins {
//  id "ear"
  id "war"
  id "idea"
  id "maven"
  id "eclipse"
  id "com.avast.gradle.docker-compose" version "0.6.13"
}

apply plugin: "org.junit.platform.gradle.plugin"

group = "daggerok"
version = "0.0.1"
sourceCompatibility = targetCompatibility = "$javaVersion"

/*
ear {
  archiveName = "${project.name}.ear"
}
*/

war {
  archiveName = "${project.name}.war"
}

defaultTasks "clean", "build"

repositories {
  mavenLocal()
  mavenCentral()
}

compileJava.dependsOn(processResources)

dependencies {

  providedCompile "javax:javaee-api:$javaeeVersion"
  providedCompile "com.h2database:h2:1.4.196"

  compile "org.hibernate:hibernate-core:$hibernateCoreVersion"
  compile "javax.json:javax.json-api:1.0"
  compile "org.glassfish:javax.json:1.0.4"
  compile "org.jboss.resteasy:resteasy-json-p-provider:3.0.7.Final"

  compile "org.slf4j:slf4j-api:$slf4jVersion"
  compile "org.slf4j:slf4j-jdk14:$slf4jVersion"

  compile "io.vavr:vavr:$vavrVersion"

  annotationProcessor "org.projectlombok:lombok:$lombokVersion"

  // junit 4
  testCompile "junit:junit:4.12"
  // junit 5
  testImplementation("org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion")
  // hamcrest asserts, like: assertThat
  testImplementation("org.hamcrest:hamcrest-core:1.3")

  testRuntime("org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion")
  testRuntime("org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion")
  testRuntime("org.junit.vintage:junit-vintage-engine:4.12.3")
  // IDEA (older bundle):
  testRuntime("org.junit.platform:junit-platform-launcher:$junitPlatformVersion")

  testCompileOnly("org.apiguardian:apiguardian-api:1.0.0")
  //testCompileOnly("org.projectlombok:lombok:$lombokVersion")
}

def profile = project.hasProperty("profile") ? project.getProperty("profile") : "gradle"

dockerCompose {
  useComposeFiles = [project.file("docker-compose-${profile}.yaml")]
  // captureContainersOutput = true
  captureContainersOutput = false
  stopContainers = true
  removeContainers = true
  removeImages = "Local"
  removeVolumes = true
  removeOrphans = true
  forceRecreate = true
  waitForTcpPorts = false
  projectName = project.name
}

composeUp.dependsOn assemble

task wrapper(type: Wrapper) {
  gradleVersion = "4.6"
  distributionType = "ALL"
}

test {
  systemProperties "property": "value"
}

idea {
  module {
    downloadSources = true
  }
}

eclipse {
  classpath {
    downloadSources = true
  }
}
