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

description = "vibe_erp platform bootstrap — Spring Boot main, configuration loading, lifecycle. INTERNAL."

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

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

dependencies {
    api(project(":api:api-v1"))
    api(project(":platform:platform-persistence")) // for the audit listener wiring
    api(project(":platform:platform-security")) // for AuthenticationFailedException, JwtIssuer wiring
    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.data.jpa) // for @EnableJpaRepositories on VibeErpApplication
    implementation(libs.spring.boot.starter.validation)
    implementation(libs.spring.boot.starter.actuator)
    // springdoc-openapi produces /v3/api-docs (the OpenAPI 3 JSON) and
    // /swagger-ui/index.html from the @RestController classes it scans
    // at runtime. Lives here alongside MetaController because it's part
    // of the same "framework self-introspection" story that MetaController
    // already serves (/_meta/info, /_meta/metadata). PBC modules never
    // depend on platform-bootstrap so no @RestController leaks into a
    // plug-in classloader; the scan only sees host controllers.
    implementation(libs.springdoc.openapi.starter.webmvc.ui)

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

tasks.test {
    useJUnitPlatform()
}