Site icon Blog Zenika

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.

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 :

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

Installation de mise

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

winget install jdx.mise

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

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"

Vous pouvez visualiser le contenu de la configuration via :

notepad $PROFILE

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

Cela va :

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

Pour les versions disponibles en local :

mise ls

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 :

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 :

Auteur/Autrice

Quitter la version mobile