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() }