plugins {
    id "java"
    id "io.micronaut.application" version "$micronautApplicationVersion"
    id "io.micronaut.aot" version "$micronautApplicationVersion"
}

version = findProperty('BUILD_VERSION') ?: 'latest'
group = "com.devsoap"

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

repositories {
    mavenCentral()
}

dependencies {

    annotationProcessor 'org.projectlombok:lombok'
    annotationProcessor 'io.micronaut.serde:micronaut-serde-processor'
    annotationProcessor("io.micronaut:micronaut-http-validation")

    compileOnly 'org.projectlombok:lombok'

    implementation(platform("io.micronaut.platform:micronaut-platform"))

    implementation 'io.micronaut.views:micronaut-views-handlebars'
    implementation 'io.micronaut.serde:micronaut-serde-jackson'
    implementation 'io.micronaut.validation:micronaut-validation'

    implementation("jakarta.annotation:jakarta.annotation-api")

    implementation "io.github.resilience4j:resilience4j-micronaut:$resilience4jVersion"
    implementation "io.github.resilience4j:resilience4j-ratelimiter:$resilience4jVersion"
    implementation "io.github.resilience4j:resilience4j-consumer:$resilience4jVersion"
    implementation "io.github.resilience4j:resilience4j-rxjava3:$resilience4jVersion"

    implementation "ch.qos.logback:logback-classic"
    implementation "org.slf4j:jul-to-slf4j:$julToSlf4jVersion"
    implementation "org.apache.commons:commons-lang3:$commonsLangVersion"

    runtimeOnly "org.webjars.npm:htmx.org:$htmxVersion"
    runtimeOnly "org.webjars.npm:hyperscript.org:$hyperscriptVersion"
    runtimeOnly "org.yaml:snakeyaml"

    testImplementation 'org.junit.jupiter:junit-jupiter-params'
    testImplementation "org.mockito:mockito-junit-jupiter:$mockitoVersion"
    testImplementation "org.assertj:assertj-core:$assertJVersion"
    testImplementation "org.reflections:reflections:$reflectionsVersion"
}

application {
    mainClass.set("com.devsoap.tincheck.Application")
}

micronaut {
    version "$micronautVersion"
    runtime("netty")
    processing {
        incremental(true)
        annotations("com.devsoap.tincheck.*")
    }
    aot {
        cacheEnvironment = true
        optimizeServiceLoading = true
        optimizeClassLoading = true
        convertYamlToJava = true
        precomputeOperations = true
    }
}

wrapper {
    gradleVersion = '8.12.1'
}

test {
    useJUnitPlatform()
    failFast = true
}