DEV Community

Cover image for Enfin un gestionnaire de version pour Java compatible nativement sous Windows (et bien plus)
Dylan Béhêtre for Zenika

Posted on • Edited on • Originally published at blog.zenika.com

Enfin un gestionnaire de version pour Java compatible nativement sous Windows (et bien plus)

Cela fait plusieurs années que je trouve contraignant le fait d’avoir à switcher d’une version de Java à une autre, lorsque je travaille sur plusieurs projets ayant des stacks techniques différentes. Il en va de même pour les versions d’autres outils tels que Node.js.

Mes précédents essais m’avaient menés vers SDKMAN, qui n’était pas pleinement compatible avec les outils sur mon espace Windows (terminal et IDE).

Dernièrement, un collègue, Guillaume FAYEMI, a trouvé la solution qui a dépassé mes attentes : mise-en-place (alias mise). C’est une solution open-source, avec plus de 15.4K étoiles sur GitHub, permettant de gérer facilement la mise en place d’une configuration de développement local, sur plusieurs systèmes d’exploitation, dont Windows.

Il permet :

  • l’installation d’outils tels que Java (des centaines d’autres sont disponibles) ;

  • la gestion automatique des variables d’environnements ;

  • la possibilité de lancer des commandes au chargement de la configuration.

Mise en place sur mon poste Windows

Powershell 7+ en pré-requis pour Windows

Pour disposer d’un terminal compatible sous windows, mise nécessite l’installation de la dernière version de Powershell. De mon côté, j’ai opté pour l’installation via winget :

winget search Microsoft.PowerShell 
Enter fullscreen mode Exit fullscreen mode

Installation de mise

De la même manière, j’ai installé mise via winget :

winget install jdx.mise 
Enter fullscreen mode Exit fullscreen mode

Configuration automatique de mise pour Powershell

Pour activer automatiquement la configuration globale ou locale de mise, il est nécessaire de créer ou mettre à jour le profil du terminal.

Personnellement, j’ai créé un profil “Current User, Current Host” nativement accessible sous $PROFILE:

New-Item -ItemType File -Path $PROFILE -Force 
Enter fullscreen mode Exit fullscreen mode

puis j’ai ajouté la configuration :

Add-Content -Path $PROFILE -Value "# Active Mise pour PowerShell" Add-Content -Path $PROFILE -Value "mise activate pwsh | Out-String | Invoke-Expression | Out-Null" 
Enter fullscreen mode Exit fullscreen mode

Vous pouvez visualiser le contenu de la configuration via :

notepad $PROFILE 
Enter fullscreen mode Exit fullscreen mode

Comment mise fonctionne

Mise va lire la configuration globale ou locale à l’emplacement courant du terminal puis mettre en place la configuration souhaitée automatiquement. En cas de déplacement dans un autre emplacement, le même processus est rejoué.

La configuration peut se faire manuellement ou en ligne de commande.

Par exemple, il est possible d’installer et de spécifier l’usage pour l’emplacement courant d’un JDK Java Temurin en version 24 via :

mise use java@temurin-24 
Enter fullscreen mode Exit fullscreen mode

Cela va :

  • Installer le dernier JDK Temurin en version 24 s’il n’est pas déjà présent sur la machine ;

  • Modifier les variables d’environnement, PATH et JAVA_HOME, dans le contexte du terminal ou de l'IDE où la commande a été jouée, pour en faire la version de Java qui y sera utilisée ;

  • Créer un fichier de configuration mise.toml à l’emplacement courant du terminal indiquant la configuration à utiliser à cet emplacement.

Ainsi, après avoir joué cette commande, tout usage de la commande java, ou utilisation de Java au travers d’un autre outil tel que Maven ou Gradle, dans ce terminal, ou tout autre terminal se trouvant à cet emplacement, utilisera la version préalablement défini.

Il est possible d’ajouter l’option -g (pour global) pour en faire la version par défaut, s’il n’y a pas de configuration plus spécifique localement.

Pour visualiser l’ensemble des versions disponibles d’un outil, voici un exemple pour Java en Temurin :

mise ls-remote java | findstr temurin 
Enter fullscreen mode Exit fullscreen mode

Pour les versions disponibles en local :

mise ls 
Enter fullscreen mode Exit fullscreen mode

Un plugin pour une intégration aux outils JetBrains comme IntelliJ IDEA

Il est possible d’intégrer un plugin Mise, pour que l’environnement se charge automatiquement, au lancement de l’IDE, ou en cas de refresh explicite. Le plugin permet également de pouvoir visualiser à l’instant t :

  • les outils actifs avec leur version ;

  • les tâches à jouer ;

  • les variables d’environnement spécifiques.

Conclusion

Finalement, l’outil mise remplit très bien son rôle de gestionnaire de versions de Java sur Windows mais il permet bien plus que cela :

  • une mise en place automatique de la configuration d’un projet quand on se trouve dedans ;

  • la gestion d’autres outils tels que Node.js ;

  • la possibilité de gérer également les variables d’environnements et le lancement de scripts.

Top comments (0)