plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.ksp) // U01:Kotlin 注解处理(无 KSP/kapt 则 Micronaut 不生成 BeanDefinition) alias(libs.plugins.micronaut.application) } group = "com.gzzn.omms" version = "2.0.0-SNAPSHOT" repositories { mavenCentral() } java { toolchain { // Micronaut 5.1 系构件要求 JVM 25+(实测依赖解析结论,修正计划的 JDK 21 口径) languageVersion = JavaLanguageVersion.of(25) } } kotlin { jvmToolchain(25) compilerOptions { // Keep Jackson XML annotations on both Kotlin constructor parameters and properties. freeCompilerArgs.add("-Xannotation-default-target=param-property") } } micronaut { runtime("netty") testRuntime("junit5") processing { incremental(true) // U01(N23):processing.annotations 语义是“注解所在包”的过滤,业务包路径不匹配任何 Micronaut // 注解,已移除(取默认),避免增量注解处理被错误过滤;注解处理由 kotlin-ksp + micronaut-inject-kotlin 承担。 } } dependencies { // U01:Micronaut Kotlin 注解处理器(KSP),生成 @Singleton/@Controller/@ConfigurationProperties 的 BeanDefinition ksp(libs.micronaut.inject.kotlin) implementation(libs.bundles.micronaut.runtime) implementation(libs.micronaut.data.jdbc) implementation(libs.micronaut.jdbc.hikari) implementation(libs.micronaut.flyway) implementation(libs.micronaut.redis.lettuce) implementation(libs.micronaut.kafka) implementation(libs.micronaut.discovery.eureka) implementation(libs.jackson.dataformat.xml) implementation(libs.jackson.module.kotlin) implementation(libs.logstash.logback.encoder) runtimeOnly(libs.mysql.connector.j) runtimeOnly(libs.postgresql) runtimeOnly("org.flywaydb:flyway-database-postgresql:12.11.0") // ACM2-11:datasources.reference(21 类静态主数据独立 PG 库)驱动 org.postgresql:postgresql // 随阶段 6 实装加入(当前 reference enabled=false 不加载;版本由 micronaut-platform BOM 钉 ~42.7) runtimeOnly(libs.snakeyaml) // U02:显式版本入 catalog(原无版本号依赖 BOM 覆盖,snakeyaml 不在 micronaut BOM 内) testImplementation(libs.junit.jupiter) // U03:配置绑定回归测试的测试库(内存 datasource,冒烟用); // V2 起 InboxLifecycleJdbcSqlTest 以 H2 的 PostgreSQL 兼容模式直连验证生命周期 SQL 语义 testImplementation(libs.h2) testImplementation("io.micronaut.test:micronaut-test-junit5") testImplementation("org.jetbrains.kotlin:kotlin-test") // P3-A(ACM2-29):无外部 PG 时 JDBC 集成测试自动起隔离容器;有 MSGX_PG_* 环境变量时不启用 testImplementation("org.testcontainers:postgresql:1.20.4") } application { // Kotlin 顶层 main(Application.kt)→ JVM 主类为 ApplicationKt; // 不声明则 ./gradlew run 报 "No main class specified"、installDist 产出的启动脚本主类为空。 mainClass.set("com.gzzn.omms.msgexchange.ApplicationKt") } tasks.test { useJUnitPlatform() }