build.gradle.kts 1.48 KB
plugins {
    alias(libs.plugins.kotlin.jvm)
    alias(libs.plugins.kotlin.spring)
    alias(libs.plugins.spring.dependency.management)
}

description = "vibe_erp Quartz-backed job scheduler. Adapts Quartz to the api.v1 JobHandler + " +
    "JobScheduler contracts so plug-ins and PBCs never import Quartz types. INTERNAL."

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(21))
    }
}

kotlin {
    jvmToolchain(21)
    compilerOptions {
        freeCompilerArgs.add("-Xjsr305=strict")
    }
}

// The only module that pulls Quartz in. Everything else in the
// framework interacts with scheduled work through the api.v1
// JobHandler + JobScheduler + JobContext contract, never through
// Quartz types. Guardrail #10: api.v1 never leaks Quartz.
dependencies {
    api(project(":api:api-v1"))
    implementation(project(":platform:platform-persistence")) // PrincipalContext.runAs for scheduled jobs
    implementation(project(":platform:platform-security"))    // @RequirePermission on the controller

    implementation(libs.kotlin.stdlib)
    implementation(libs.kotlin.reflect)
    implementation(libs.jackson.module.kotlin)

    implementation(libs.spring.boot.starter)
    implementation(libs.spring.boot.starter.web)
    implementation(libs.spring.boot.starter.quartz)

    testImplementation(libs.spring.boot.starter.test)
    testImplementation(libs.junit.jupiter)
    testImplementation(libs.assertk)
    testImplementation(libs.mockk)
}

tasks.test {
    useJUnitPlatform()
}