0016 — Bump major: Java 25 + Micronaut 5¶
Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-07-06 · Decidido em: 2026-07-06
Contexto¶
O projeto estava em Java 21 / Micronaut 4.7.6 — uma major atrás. O salto para
Micronaut 5 exige Java 25 baseline (o plugin io.micronaut.application 5 exige)
e traz breaking changes que não são óbvios no diff. Registrar aqui evita que o
próximo bump redescubra cada um na marra.
Decisão¶
Subir para Java 25 + Gradle 9.5.1 + Micronaut 5.0.2 (plugin 5.0.0).
docs/app.json declara toolchain.java=25; o Dockerfile usa eclipse-temurin:25.
No WSL o JDK é gerenciado via SDKMAN (GraalVM 25). Efeitos colaterais resolvidos no
mesmo trabalho:
micronaut-jackson-databind(reflexivo, removido do BOM) →micronaut-serde-jackson(serde build-time, Jackson 3tools.jackson.*) — exigiu@Serdeablenos DTOs e migração deCoolifyClient+ConformidadeTestpara Jackson 3.ViewModelProcessorvirou 2-arg (GlobalViewModel).ConnectionOperationsganhoumanagesConnection.- Testcontainers precisa de versão explícita (o BOM parou de propagar).
- AWS SDK ≥2.30 liga flexible checksums (CRC32) que o Garage rejeita →
RequestChecksumCalculation.WHEN_REQUIREDnoS3ClientFactory.
Atenção operacional: o Gradle 9.5.1 exige Java ≤25 e não roda em JDK futuro não
suportado — se JAVA_HOME apontar para JVM que ele não reconhece, o build falha
com IllegalArgumentException: <versão>.
Consequências¶
- Stack atual, CVEs corrigidos, baseline alinhado ao framework e ao irmão
bi-transporte-xls. - Exige PostgreSQL 18+ e Flyway 12+ (já pré-requisitos da stack).
- CI/Docker (
temurin:25) validado no deploy; contrato do export canônico preservado (gate:ConformidadeTest).
Alternativas consideradas¶
- Ficar no último 4.x (Java 21): pega CVEs sem exigir Java 25, mas adia o inevitável e não destrava os primitivos do MN5. Foi o passo intermediário; seguimos para o 5 por ser a base alvo da casa.