Micronaut (Java)
Micronaut fonctionne sur Kavio, mais un réglage est indispensable — sans lui, le build échoue avant même de compiler votre code.
1. Le JDK 25 est obligatoire pour builder, pas juste pour exécuter
Le plugin micronaut-maven-plugin (version 5.x) embarque une extension de cycle de vie Maven compilée pour le bytecode Java 25. Maven ne peut pas charger cette extension sur un JDK plus ancien — le build échoue immédiatement avec UnsupportedClassVersionError, avant de toucher à une seule ligne de votre code, quelle que soit la version Java que vous ciblez vous-même (maven.compiler.release).
Il faut donc positionner RAILPACK_JDK_VERSION=25 dans les variables d'environnement du projet, sur Kavio, avant le premier déploiement :
RAILPACK_JDK_VERSION=25
Contrairement à Spring Boot ou Quarkus (où changer de JDK est une option), c'est ici une condition pour que le build démarre.
2. Le port n'est pas injecté automatiquement
Comme pour Quarkus, l'injection automatique du port ne concerne que Spring Boot et WildFly Swarm. Lisez PORT vous-même dans application.properties :
micronaut.server.port=${PORT:8080}
3. Deux jars dans target/ — ça fonctionne quand même
maven-shade-plugin (utilisé par Micronaut) laisse original-<nom>.jar (le jar d'origine, non exécutable seul) à côté de <nom>.jar (le vrai jar shadé, exécutable). Le motif target/*jar de Railpack matche les deux fichiers, mais ça reste fonctionnel : le préfixe original- place systématiquement ce fichier après le jar exécutable dans l'ordre alphabétique — java -jar target/*jar reçoit donc le bon jar en premier argument, et le second comme simple argument ignoré par votre application.
Ce n'est pas un coup de chance (le préfixe est fixe, l'ordre est donc garanti), mais si vous préférez fiabiliser explicitement :
RAILPACK_START_CMD=java -jar target/votre-artifact-0.1.jar
Les fichiers statiques ne sont pas servis par défaut
Contrairement à Spring Boot et Quarkus, Micronaut ne sert aucun dossier statique tant que vous ne l'avez pas déclaré dans application.properties :
micronaut.router.static-resources.default.paths=classpath:public
micronaut.router.static-resources.default.mapping=/**
Avec les fichiers placés dans src/main/resources/public/.
Ce qui n'est pas nécessaire
Vous n'avez rien à faire concernant :
- Le disque applicatif — inscriptible sur Kavio, aucune redirection de fichiers à prévoir (utile si vous utilisez SQLite).