plugins {
    alias(libs.plugins.springPlugin)
    alias(libs.plugins.springDepMgt)
    alias(libs.plugins.kotlinAllOpen)
    alias(libs.plugins.kotlin)
    alias(libs.plugins.kotlinSpring)
    alias(libs.plugins.kotlinJpa)
    alias(libs.plugins.serializationPlugin)
}

allOpen {
    annotation("javax.persistence.Entity")
    annotation("javax.persistence.Embeddable")
    annotation("javax.persistence.MappedSuperclass")
    annotation("jakarta.persistence.Entity")
    annotation("jakarta.persistence.Embeddable")
    annotation("jakarta.persistence.MappedSuperclass")
}

group = "de.fraunhofer.iem"
version = "0.0.2-SNAPSHOT"

configurations {
    compileOnly {
        extendsFrom(configurations.annotationProcessor.get())
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(libs.bundles.kpiCalculator)
    implementation(libs.bundles.springBoot)
    implementation(libs.bundles.ktor)
    implementation(libs.bundles.coroutines)
    implementation(libs.kotlinReflect)
    implementation(libs.bundles.serialization)
    implementation(libs.gitlab4j)
    implementation(libs.jgit)
    implementation(libs.authJwt)
    runtimeOnly(libs.postgresql)
    testImplementation(libs.ktorTest)
    testImplementation(libs.springBootStarterTest) {
        exclude("mockito-core")
        exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
    }
    testImplementation(libs.junitJupiterApi)
    testImplementation(libs.bundles.springTest)
    testImplementation(libs.coroutineTest)
    developmentOnly(libs.devTools)
    testRuntimeOnly(libs.junitJupiter)
    testRuntimeOnly(libs.h2db)
}

kotlin {
    compilerOptions {
        jvmToolchain(21) 
        apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
        freeCompilerArgs.add("-Xjsr305=strict")
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}