Files
msgexchange-v2/build.gradle.kts
T
windyboy 7e3bf383a5 docs+fix: 文档回到代码事实;修复 dev 冒烟使其真正可跑(ACM2-10 复核意见落地)
实测过程发现并修复四层问题,随后全部按实测结果校订文档:

- build.gradle.kts:补 application.mainClass(Kotlin 顶层 main → ApplicationKt)。
  此前 ./gradlew run 报 "No main class specified",installDist 启动脚本主类为空(Dockerfile 不可运行)。
- application-dev.yml:stub 模式真正免基础设施——
  * datasources.default.enabled=false(micronaut-jdbc JdbcDataSourceEnabled 条件排除 DataSource,
    原注释"stub 不建连"意图未实现,DataSource eager 强制连 MySQL 导致启动失败);
  * 关闭 micronaut 自带 Redis/Kafka 健康指示器(无 broker 时装配即把 /health 打成 500);
  * 端点配置前缀修正:micronaut.endpoints.* 是死配置(/env 404、/beans 401 实测),
    正确为顶层 endpoints.*(env 默认禁用 / beans 默认 enabled+sensitive 一并注明);
  * 关闭 eureka discovery,避免无注册中心时 /health 变 DOWN。
  验证:MICRONAUT_ENVIRONMENTS=dev ./gradlew run 无任何 env/外部依赖启动 → POST /cminmsgs/send
  200 返回 ID → /health UP;text/plain 415(U16 缺口实证)。37 测试全绿未受影响。
- README/docs/architecture.md/docs/design.md:按实测与复核意见校订——
  * README:dev 冒烟命令恢复为"无需 DB/Redis/Kafka",记录修复缘由;
  * architecture:U17 服务名未落地(注册名仍取 micronaut.application.name=msgexchange-nextgen,
    msgx.service-name 无消费方)、三层隔离为目标态(仅 register-eureka=false 生效)、
    管理端点 5.1 实际口径(/env 默认禁用、/beans 默认 enabled+sensitive)、就绪度口径更新;
  * design:§9 补 U17 行;smoke 路径 UNSUPPORTED→CODEC_ERROR 修正;毒丸 head-deadline 判据不可达、
    快照 CAS 崩溃重放二次自增版本等"代码行为≠文档声明"处加实现注;I1 状态行同步。
- gradle/libs.versions.toml + gradle.properties:版本矩阵注释按依赖解析实测修正
  (platform 5.1.3 生效但 core 系解析 5.1.13,classpath 混用;原"5.1.10 无平台 BOM"说法与观测不符)。

未提交内容:无。代码级缺陷(毒丸判据、CAS 重放、DNLD 路由顺序、identity 键释放等)仍属
ACM2-10 排期,本次仅按文档职责如实标注,未改动实现。
2026-09-07 07:39:57 +08:00

68 lines
2.3 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
plugins {
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.kotlin.ksp) // U01Kotlin 注解处理(无 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)
}
micronaut {
runtime("netty")
testRuntime("junit5")
processing {
incremental(true)
// U01N23):processing.annotations 语义是“注解所在包”的过滤,业务包路径不匹配任何 Micronaut
// 注解,已移除(取默认),避免增量注解处理被错误过滤;注解处理由 kotlin-ksp + micronaut-inject-kotlin 承担。
}
}
dependencies {
// U01Micronaut 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.snakeyaml) // U02:显式版本入 catalog(原无版本号依赖 BOM 覆盖,snakeyaml 不在 micronaut BOM 内)
testImplementation(libs.junit.jupiter)
testRuntimeOnly(libs.h2) // U03:配置绑定回归测试的测试库(内存 datasource,冒烟用)
testImplementation("io.micronaut.test:micronaut-test-junit5")
testImplementation("org.jetbrains.kotlin:kotlin-test")
}
application {
// Kotlin 顶层 mainApplication.kt)→ JVM 主类为 ApplicationKt
// 不声明则 ./gradlew run 报 "No main class specified"、installDist 产出的启动脚本主类为空。
mainClass.set("com.gzzn.omms.msgexchange.nextgen.ApplicationKt")
}
tasks.test {
useJUnitPlatform()
}