plugins {
    id "java"
    id "io.quarkus" version "3.0.0.Final"
}

def quarkusVersion = "3.0.0.Final"
def optaplannerVersion = "9.44.0.Final"
def assertjVersion = "3.24.2"

group = "org.acme"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    implementation enforcedPlatform("io.quarkus:quarkus-bom:${quarkusVersion}")
    implementation "io.quarkus:quarkus-resteasy"
    implementation "io.quarkus:quarkus-resteasy-jackson"
    implementation "io.quarkus:quarkus-hibernate-orm-panache"
    implementation "io.quarkus:quarkus-jdbc-h2"
    implementation "io.quarkus:quarkus-hibernate-orm-rest-data-panache"
    implementation "io.quarkus:quarkus-webjars-locator"
    testImplementation "io.quarkus:quarkus-junit5"
    testImplementation "io.quarkus:quarkus-test-h2"
    testImplementation "io.rest-assured:rest-assured"
    testImplementation "org.awaitility:awaitility"

    implementation platform("org.optaplanner:optaplanner-bom:${optaplannerVersion}")
    implementation "org.optaplanner:optaplanner-quarkus"
    implementation "org.optaplanner:optaplanner-quarkus-jackson"
    testImplementation "org.optaplanner:optaplanner-test"
    testImplementation "org.optaplanner:optaplanner-quarkus-benchmark"
    testImplementation "org.assertj:assertj-core:${assertjVersion}"

    runtimeOnly "org.webjars:bootstrap:4.3.1"
    runtimeOnly "org.webjars:jquery:3.4.1"
    runtimeOnly "org.webjars:font-awesome:5.11.2"
    runtimeOnly "org.webjars.npm:js-joda:1.11.0"

}

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

compileJava {
    options.encoding = "UTF-8"
    options.compilerArgs << "-parameters"
}

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

test {
    systemProperty "java.util.logging.manager", "org.jboss.logmanager.LogManager"
    // Gradle needs native tests in src/native-test/java, but maven needs them in src/test/java instead.
    // Maven first, so we skip them in Gradle unfortunately.
    exclude "**/**IT.class"
    // Log the test execution results.
    testLogging {
        events "passed", "skipped", "failed"
    }
}
