buildscript {
    repositories {
        maven {
            url "${pluginsRepositoryUrl}"
        }
    }

    dependencies {
        classpath "io.franzbecker:gradle-lombok:1.14"
        classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.8"
    }
}

subprojects {
    println "applying java plugins to $project"

    apply plugin: "java"
    apply plugin: "io.franzbecker.gradle-lombok"
    apply plugin: "jacoco"
    apply plugin: "net.ltgt.errorprone"

    sourceCompatibility = 8
    targetCompatibility = 8

    repositories {
        mavenCentral()
        mavenLocal()
        jcenter()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
        maven {
            url "https://nexus.bedatadriven.com/content/groups/public"
        }
        maven {
            url 'http://ec2-18-233-224-170.compute-1.amazonaws.com:8080/repository/release/'
        }
    }

    group = "${projectGroup}"
    version = "${projectVersion}"

    wrapper {
        gradleVersion = "5.2"
    }

    lombok {
        version = "${lombokVersion}"
        sha256 = ""
    }

    dependencies {
        implementation "org.projectlombok:lombok:${lombokVersion}"
        annotationProcessor "org.projectlombok:lombok:1.18.8"

        implementation "javax.inject:javax.inject:1"
        implementation "javax.xml.bind:jaxb-api:2.3.0"
        implementation "com.sun.xml.bind:jaxb-core:2.3.0"
        implementation "com.sun.xml.bind:jaxb-impl:2.3.0"
        implementation "javax.activation:activation:1.1.1"
        implementation "javax.annotation:javax.annotation-api:1.3.2"
        implementation "com.google.code.findbugs:annotations:3.0.1"
        errorprone "com.google.errorprone:error_prone_core:${errorProneVersion}"
        errorproneJavac("com.google.errorprone:javac:9+181-r4173-1")
    }

    test {
        useJUnitPlatform()

        testLogging {
            events "passed", "skipped", "failed"
        }
    }

    task cleanBuild(dependsOn: [clean, build]) {
        println "clean and build $project"
    }

    tasks.withType(JavaCompile).configureEach {
        options.compilerArgs += ['-Werror']

        // Right now check `finally` crashes ErrorProne under Java 12
        // https://github.com/google/error-prone/issues/1257
        options.errorprone.errorproneArgs = ['-Xep:Finally:OFF']

        options.errorprone {
            disableWarningsInGeneratedCode = true
        }
    }

    jacocoTestReport {
        reports {
            xml.enabled true
            html.enabled true
        }
    }
}
