Aller au contenu

Native Maven

Lancez des builds Apache Maven 4 avec elide mvn sans installer Maven ni un JDK à part : variantes pour les projets simples et Spring Boot, modes et sortie.

Sur cette page

elide mvn lance des builds Apache Maven 4 sans installer Maven ni un JDK à part.

Lancer un build

elide mvn -- package
elide mvn -- -f app/pom.xml clean install
elide mvn -- --version

Tout ce qui suit -- est transmis à Maven, sauf --flavor, --mode, --yes et --porcelain, que gère elide mvn. La racine du projet est le répertoire .mvn le plus proche au-dessus de -f/--file ou du répertoire de travail.

Première exécution

Chaque variante se télécharge une seule fois, avec une confirmation à la première utilisation :

Native Maven component 'generic' is not installed. Download it now? [Y/n]

Les images s’installent dans lib/maven/bin/ du répertoire d’Elide. Les sessions non interactives téléchargent sans demander ; dans un terminal, --yes saute la confirmation :

elide mvn -- --yes package
PlateformeArchitecture
Linuxx86_64, aarch64
macOSaarch64
Windowsx86_64

Variantes

Une variante est l’ensemble des plugins Maven qui s’exécutent en natif.

VariantePluginsPour
genericCycle de vie par défaut : clean, resources, compiler, surefire, jar, install, deployProjets Java ou Kotlin simples
spring@4.1.0Tout ce qu’utilise un projet Boot 4.1 généré par Spring InitializrSpring Boot 4.1.x
spring@4.0.7Idem, pour Boot 4.0Spring Boot 4.0.x

Elide choisit la variante spring qui correspond au major.minor de la version du parent spring-boot-starter-parent ou de spring-boot-maven-plugin dans pom.xml (Boot 4.1.3 → spring@4.1.0). Sinon, y compris avec des espaces réservés ${…}, il utilise generic. Pour forcer un autre choix :

elide mvn -- --flavor spring@4.1.0 package
elide mvn -- --flavor=spring@4.0.7 -f app/pom.xml install

Modes

--mode=<value> (ou -Dnmvn.mode=<value> ; l’option l’emporte) détermine ce qui exécute les plugins absents de la variante :

elide mvn -- --mode=mixed package
ModeComportement
native (par défaut)Seuls les plugins de la variante s’exécutent. Un plugin manquant fait échouer le build tôt, en nommant la variante qui le contient et en suggérant --mode=mixed.
mixedLes plugins de la variante s’exécutent en natif ; les autres goals s’exécutent un par un sur une JVM dans le même processus.
legacyTout le build s’exécute comme Apache Maven standard sur la JVM du processus, comme point de comparaison.

mixed et legacy téléchargent une distribution Maven dans lib/maven/ à la première utilisation. Aucun JDK séparé n’est nécessaire.

Limites du mode mixte

  • Chaque goal délégué ajoute environ 0,2 s après un démarrage unique. Si la plupart des goals sont délégués, choisissez une variante qui contient davantage de leurs plugins.
  • Les artefacts d’un goal délégué ne sont pas attachés à la session. Si le plugin jar n’est pas dans la variante, lancez package, pas install ni deploy.
  • La configuration de plugins passée en ligne de commande n’atteint les goals délégués que sous forme de propriétés -D.

Sortie

Un terminal affiche une ligne d’état (plugin, goal, version, module), puis un résumé des phases et la durée du build ; en cas d’échec, le journal Maven complet s’affiche. --porcelain diffuse la sortie propre de Maven, tout comme les exécutions verbeuses, de débogage et non interactives :

elide mvn -- --porcelain package

Inspecter une image installée

<elide-home>/lib/maven/bin/nmvn-generic --info
<elide-home>/lib/maven/bin/nmvn-spring-4.1.0 --info=plugins

--info affiche la variante, l’édition et les plugins ; --info=plugins, --info=flavor ou --info=variant n’en affiche qu’un.

Compatibilité

Native Maven lit le même pom.xml et suit le même cycle de vie qu’Apache Maven 4. La couverture des plugins se limite aux variantes publiées. La compilation s’exécute dans le processus ; les plugins qui lancent le compilateur en fork utilisent le javac d’Elide.

Cette page vous a-t-elle aidé ?