plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.spring) alias(libs.plugins.spring.dependency.management) } description = "vibe_erp plug-in host — PF4J integration, classloader isolation, lifecycle. INTERNAL." java { toolchain { languageVersion.set(JavaLanguageVersion.of(21)) } } kotlin { jvmToolchain(21) compilerOptions { freeCompilerArgs.add("-Xjsr305=strict") } } dependencies { api(project(":api:api-v1")) implementation(libs.kotlin.stdlib) implementation(libs.kotlin.reflect) implementation(libs.jackson.module.kotlin) implementation(project(":platform:platform-events")) // for the real EventBus injected into PluginContext implementation(project(":platform:platform-metadata")) // for per-plug-in MetadataLoader.load(...) implementation(project(":platform:platform-i18n")) // for per-plug-in IcuTranslator + shared LocaleProvider implementation(project(":platform:platform-security")) // for PermissionEvaluator refresh wiring implementation(project(":platform:platform-workflow")) // for per-plug-in TaskHandler registration implementation(project(":platform:platform-jobs")) // for per-plug-in JobHandler registration // Note: platform-files and platform-reports are NOT needed here // because DefaultPluginContext accepts api.v1 FileStorage + // ReportRenderer interfaces (both in api-v1), and the concrete // beans are wired by Spring at distribution boot. Adding them // as dependencies would work too but would unnecessarily couple // platform-plugins to two more modules. implementation(libs.spring.boot.starter) implementation(libs.spring.boot.starter.web) // for @RestController on the dispatcher implementation(libs.spring.boot.starter.data.jpa) // for DataSource + JdbcTemplate + TransactionTemplate implementation(libs.liquibase.core) // for plug-in-owned Liquibase changelogs implementation(libs.asm) // for plug-in linter bytecode scan implementation(libs.pf4j) implementation(libs.pf4j.spring) testImplementation(libs.spring.boot.starter.test) testImplementation(libs.junit.jupiter) testImplementation(libs.assertk) testImplementation(libs.mockk) } tasks.test { useJUnitPlatform() }