···96969797### Une stack java
98989999-Déclarer une stack Java est très simple avec un fichier `mise.toml` :
9999+Déclarer une stack Java est très simple avec un fichier `mise.toml` :
100100101101```toml
102102[tools]
···104104maven = "3"
105105```
106106107107-Une fois le fichier crée, au chargement du répertoire, `mise` affichera une erreur, car il ne souhaite par exécuter les fichiers par défaut (par mesure de sécurité) :
107107+Une fois le fichier crée, au chargement du répertoire, `mise` affichera une erreur, car il ne souhaite par exécuter les fichiers par défaut (par mesure de sécurité) :
108108109109```shell
110110$ cd workspaces/gitlab-classrooms
···114114mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
115115```
116116117117-La commande `mise trust` permet donc d'activer le fichier de configuration donné :
117117+La commande `mise trust` permet donc d'activer le fichier de configuration donné :
118118119119```shell
120120$ mise trust
···122122mise WARN missing: java@temurin-25.0.1+8.0.LTS maven@3.9.12
123123```
124124125125-Il est aussi possible de configurer `mise` pour truster des répertoires complets dans le fichier `.config/mise/config.toml` :
125125+Il est aussi possible de configurer `mise` pour truster des répertoires complets dans le fichier `.config/mise/config.toml` :
126126127127```toml
128128[settings]
129129trusted_config_paths = ["~/workspaces"]
130130```
131131132132-Une fois le fichier créé et trusté, `mise` affichera les outils manquants s'il y en a avec un warning :
132132+Une fois le fichier créé et trusté, `mise` affichera les outils manquants s'il y en a avec un warning :
133133134134```shell
135135mise WARN missing: java@temurin-25.0.1+8.0.LTS maven@3.9.12
136136```
137137138138-Pour installer les outils manquants, il suffit alors d'exécuter la commande `mise install` :
138138+Pour installer les outils manquants, il suffit alors d'exécuter la commande `mise install` :
139139140140```shell
141141$ mise install
···143143mise java@temurin-25.0.1+8.0.LTS download OpenJDK25U-jdk_x64_linux_hotspot_25.0.1_8.tar.gz 128.19 MiB/134.21 MiB (0s) ███████████████████░ 2s
144144```
145145146146-Une fois les outils installés, ils sont ajoutés au `$PATH` et peuvent être utilisés immédiatement :
146146+Une fois les outils installés, ils sont ajoutés au `$PATH` et peuvent être utilisés immédiatement :
147147148148```shell
149149$ echo $PATH
···163163OS name: "linux", version: "6.17.12-1-manjaro", arch: "amd64", family: "unix"
164164```
165165166166-Si je veux utiliser une autre version de Java, rien de plus simple, je peux simplement modifier le fichier `mise.toml`, ou exécuter la commande `mise use` (qui va aussi modifier le fichier `mise.toml`) :
166166+Si je veux utiliser une autre version de Java, rien de plus simple, je peux simplement modifier le fichier `mise.toml`, ou exécuter la commande `mise use` (qui va aussi modifier le fichier `mise.toml`) :
167167168168```shell
169169$ mise use graalvm@25
···187187188188C'est pratique, flexible et bluffant.
189189190190-Les packages sont installés par défaut dans le répertoire `~/.local/share/mise/installs/`, et utilisent des liens symboliques pour relier les différentes version et alias de versions :
190190+Les packages sont installés par défaut dans le répertoire `~/.local/share/mise/installs/`, et utilisent des liens symboliques pour relier les différentes version et alias de versions :
191191192192```shell
193193$ tree -L 2 ~/.local/share/mise/installs/
···219219220220Bien qu'installer Hugo est plutôt facile, autant essayer de basculer le maximum de choses avec `mise` pour ce test.
221221222222-Hugo est disponible dans le registry de `mise` :
222222+Hugo est disponible dans le registry de `mise` :
223223224224```shell
225225$ mise registry | grep hugo
···228228```
229229230230Plutôt que d'intialiser directement le fichier `mise.toml` avec la configuration de l'outil,
231231-il est possible d'utiliser la commande `mise use`, qui va générer le fichier pour nous et installer l'outil directement, qui sera immédiatement utilisable :
231231+il est possible d'utiliser la commande `mise use`, qui va générer le fichier pour nous et installer l'outil directement, qui sera immédiatement utilisable :
232232233233```shell
234234$ mise use hugo
···238238hugo v0.152.2+extended+withdeploy linux/amd64 BuildDate=unknown
239239```
240240241241-Le fichier généré est alors le suivant :
241241+Le fichier généré est alors le suivant :
242242243243```toml
244244[tools]
···247247248248Utiliser une version "latest" est bien entendu déconseillé, mais cela permet de tester rapidement la nouvelle version de l'outil.
249249250250-Et encore une fois, tout fonctionne parfaitement :
250250+Et encore une fois, tout fonctionne parfaitement :
251251252252```shell
253253hugo serve
···277277278278## Utiliser des variables d'environnement
279279280280-`mise` permet de déclarer des variables d'environnement dans le fichier `mise.toml` avec le bloc `[env]` :
280280+`mise` permet de déclarer des variables d'environnement dans le fichier `mise.toml` avec le bloc `[env]` :
281281282282```toml
283283[env]
284284SPRING_PROFILES_ACTIVE = 'local'
285285```
286286287287-Il est aussi possible de charger un fichier `.env` avec [une directive](https://mise.jdx.dev/environments/#env-directives) :
287287+Il est aussi possible de charger un fichier `.env` avec [une directive](https://mise.jdx.dev/environments/#env-directives) :
288288289289```toml
290290[env]
···310310Enter value for GITLAB_CLIENT_SECRET ************
311311```
312312313313-Les valeurs chiffrées sont stockées dans le fichier `mise.toml`, qui peut alors être poussé sur un repo git en toute sécurité :
313313+Les valeurs chiffrées sont stockées dans le fichier `mise.toml`, qui peut alors être poussé sur un repo git en toute sécurité :
314314315315```toml
316316[env]
···318318GITLAB_CLIENT_SECRET = { age = "YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1yc2EgYWM5WlV3Cmpsa0EweTlISnFLQmJ4NHBRQTRDVGRBd21NM3JWbVo1b3NFZHQ3dXcvZHZaQmFYMkEyWjViWmpJWCtLT0R1aVkKckNsUW1qVHZ1NlBEelYzQm9nNkk1SEp3REJsNzZvdmJuTkdYd2tLV3VCRFBRUXlCYjhhVzNvSnBib0dDcUFXTwpydW1INWIyMWtjaCt2WnlGeEx5dXM5Q205NUJBdmlycjUzdE41ejFFOW9PZ1YzaXczM292bXlsSkpPWW5hVldQCkJOUUZ3ditlbGFJbzRWZU5TeTBaSitoUk1TeDh4RVJqUjRaVkV5MGJrOXhJeitsbjBKcEQ0TkZla1V4bnNybUoKWVBjeSttUkFMVkd2Q2t1dDJVUWxjMk9vcER3cWFZcjNBRHNTZVJqMGZNc01xQ1VZd3pHU2hQazJWczFRbjd6OAowSHRqS0tCeE1HL2MrVG5FaUhaVndvWm9xNzNrME41VjJDRzlzbEFGRzdvQ040elNSeVAxcVdGMVlSK2NsQlM3ClJFbGZtV2pVOUh3VmF2RXlhNE5pekpIcnVpSzF2WWs5YWMvSTRqYnBQMnBMUFpValNTajI2WVp2YXRSTWgxd1AKTGVZektqdWxjRENjMVJaZy9aVEhvQkgzNXdyT01PY1NKT2t0MHB2VW9RK1hCSmxkbk5aWElGVndKeTRZRi90VApXMDhnWFlCVGRZeTFZcHRKSUdRbHkrRXlidXdKY0lCUVNjYy8vR21LbTk5eG5UTFp3L1RUM3JFbldRNldkTkJFCmVsZ2VqWXc3c3Q0eERtb0YxSDhNZjlrOUdJdmp4QjhEVW16UlRGY0xrbGtBZXkwcVkvZ1MrWVRKYXdqTm9QYjkKcUJzNS9MdUR4UENvU05iRHo5cGVEaGpvTDVwdU0xMUsrUGRBQkNaUFZaVQotPiB0LWdyZWFzZSA5KklKaXIgWlcyCjJzUlRqRXo3ZnJ6ZVZndk92UVE5QllNejhNZGZqVjYxMWN5U0JjbzhUbTJhCi0tLSBmRXEwQnh0Ykc4NWtIdk1nd200LzI2aEZtVEJqZ2x6QWp3ZCs0TlJjYThBCrPsAPxQrwsNRNctYosJQ7GQM8+Zc4bdoMoTbSehN6Fyf/5AvfJ2ko3Gm5FJ9L2qnW0ZGW+QTLMsR4vLInmecojm/eu4LKC5EqBB/3oFCAJJNZAdOtYiJnwUCWml5WY" }
319319```
320320321321-Et les valeurs sont automatiquement déchiffrées pour être disponibles dans le shell en variable d'environnement :
321321+Et les valeurs sont automatiquement déchiffrées pour être disponibles dans le shell en variable d'environnement :
322322323323```shell
324324$ env | grep GITLAB
···336336337337Et on peut aller assez loin dans la configuration, avec des dépendances entre les tâches ou conditionner l'exécution à la mise à jour d'un fichier par exemple.
338338339339-Pour mon site, j'avais un `justfile` qui contenait quelques commandes, je l'ai rapidement migré, et en voici le résultat :
339339+Pour mon site, j'avais un `justfile` qui contenait quelques commandes, je l'ai rapidement migré, et en voici le résultat :
340340341341```toml
342342[tools]
···398398399399## Liens et références
400400401401-* Le blog post de Siegfried Erhet : https://sieg.fr/ied/avent-2025/04-mise/
401401+* Le blog post de Siegfried Erhet : https://sieg.fr/ied/avent-2025/04-mise/
402402* Mon [article sur mon usage de `direnv`](/2022/06/17/direnv-pour-votre-shell)
403403-* La documentation officielle de `mise` : https://mise.jdx.dev
404404- * L'installation de `mise` : https://mise.jdx.dev/installing-mise.html
405405- * L'utilisation des DevTools : https://mise.jdx.dev/dev-tools/
406406- * La liste des outils disponibles : https://mise.jdx.dev/registry.html#tools
407407- * L'utilisation des variables d'environnement : https://mise.jdx.dev/environments/
408408- * Utilisation de tâches : https://mise.jdx.dev/tasks/
403403+* La documentation officielle de `mise` : https://mise.jdx.dev
404404+ * L'installation de `mise` : https://mise.jdx.dev/installing-mise.html
405405+ * L'utilisation des DevTools : https://mise.jdx.dev/dev-tools/
406406+ * La liste des outils disponibles : https://mise.jdx.dev/registry.html#tools
407407+ * L'utilisation des variables d'environnement : https://mise.jdx.dev/environments/
408408+ * Utilisation de tâches : https://mise.jdx.dev/tasks/