buildscript {
    repositories {
        mavenLocal()
        gradlePluginPortal()
        mavenCentral()
        jcenter()
        maven {
            url "https://repo.spring.io/libs-milestone"
            mavenContent { releasesOnly() }
        }
        maven {
            url "https://repo.spring.io/libs-snapshot"
            mavenContent { snapshotsOnly() }
        }
        maven {
            url "https://plugins.gradle.org/m2/"
            mavenContent { releasesOnly() }
        }
    }
    dependencies {
        classpath "de.undercouch:gradle-download-task:${project.gradleDownloadTaskVersion}"
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${project.springBootVersion}"
        classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:${project.jibVersion}"
        classpath "io.freefair.gradle:maven-plugin:${project.gradleMavenPluginVersion}"
        classpath "io.freefair.gradle:lombok-plugin:${project.gradleLombokPluginVersion}"
    }
}

repositories {
    mavenLocal()
    mavenCentral()
    jcenter()
    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots"
        mavenContent { snapshotsOnly() }
    }
    maven {
        mavenContent { releasesOnly() }
        url "https://build.shibboleth.net/nexus/content/repositories/releases/"
    }
    maven {
        mavenContent { releasesOnly() }
        url "https://repo.spring.io/milestone/"
    }
    maven {
        url "https://repo.spring.io/snapshot/"
        mavenContent { snapshotsOnly() }
    }
    maven {
        mavenContent { snapshotsOnly() }
        url "https://oss.jfrog.org/artifactory/oss-snapshot-local"
    }
}

def casServerVersion = project.'cas.version'
def casWebApplicationBinaryName = "cas.war"

project.ext."casServerVersion" = casServerVersion
project.ext."casWebApplicationBinaryName" = casWebApplicationBinaryName

apply plugin: "io.freefair.war-overlay"
apply plugin: "io.freefair.lombok"
apply from: rootProject.file("gradle/tasks.gradle")

apply plugin: "war"
apply plugin: "eclipse"
apply plugin: "idea"

apply from: rootProject.file("gradle/springboot.gradle")
apply from: rootProject.file("gradle/dockerjib.gradle")

dependencies {
    // Other CAS dependencies/modules may be listed here...
    // implementation "org.apereo.cas:cas-server-support-json-service-registry:${casServerVersion}"
    compile "org.apereo.cas:cas-server-support-ldap:${casServerVersion}"
    compile "org.apereo.cas:cas-server-support-json-service-registry:${casServerVersion}"

}

tasks.findByName("jibDockerBuild")
    .dependsOn(copyWebAppIntoJib, copyConfigIntoJib)
    .finalizedBy(deleteWebAppFromJib)

tasks.findByName("jib")
    .dependsOn(copyWebAppIntoJib, copyConfigIntoJib)
    .finalizedBy(deleteWebAppFromJib)

configurations.all {
    resolutionStrategy {
        cacheChangingModulesFor 0, "seconds"
        cacheDynamicVersionsFor 0, "seconds"

        preferProjectModules()

        def failIfConflict = project.hasProperty("failOnVersionConflict") && Boolean.valueOf(project.getProperty("failOnVersionConflict"))
        if (failIfConflict) {
            failOnVersionConflict()
        }
    }
}

eclipse {
    classpath {
       downloadSources = true
       downloadJavadoc = true
    }
}

idea {
    module {
        downloadJavadoc = true
        downloadSources = true
    }
}
