Pular para conteúdo

0009 — Bump para Micronaut 5 e JDK 25

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-06-30 · Decidido em: 2026-06-30

Contexto

A stack da casa (engenharia/stack.md) padronizou em JDK 25 LTS + Micronaut 5. O auth-service estava em Micronaut 4.10 / JDK 21, atrás do padrão — e desalinhado dos demais apps (ex. bi-transporte-xls, já em Micronaut 5 / JDK 25). A decisão 0001 (Micronaut sobre Spring/Quarkus) continua de pé; muda só a versão.

Decisão

Migrar para Micronaut Platform 5.0.3 (BOM), JDK 25 (toolchain Gradle) e Gradle 9.5.1. Plugin io.micronaut.application 5.0.0; version do projeto movido para gradle.properties (padrão da casa, lido pela /xadm-release).

Consequências

  • Jackson 3 (tools.jackson.*) passa a ser o backend do serde — o JwtService.jwksJson() deixou de usar com.fasterxml.jackson.databind.ObjectMapper (Jackson 2) e serializa o JWKS via nimbus (JSONObjectUtils). Os DTOs já eram @Serdeable, então as views HTTP não precisaram mudar.
  • O JVM que roda o Gradle precisa ser 25 (o plugin Micronaut 5.0.0 exige) — não basta o toolchain. Localmente: JAVA_HOME apontando para um JDK 25. Em CI/Docker já é JDK 25 (ci-java:25, eclipse-temurin:25).
  • micronaut-http-server-netty e micronaut-inject-java (AP) passam a ser declarados explicitamente; Flyway fixado em 12.x (PG 18); Testcontainers com versões explícitas (o platform() do BOM não propaga sob Gradle 9).
  • O plugin/bloco de AOT foi removido (otimização opcional, não usada pela casa).

Alternativas consideradas

  • Permanecer em Micronaut 4 / JDK 21: mantém o app divergente da stack da casa e do ferramental de CI (imagens ci-java:25). Descartado.