O que é mise?
mise além de uma série de placas de vídeo da NVIDIA, também é uma ferramente para gerenciamento de SDKs, com ele gerenciamos automaticamente versões, variáveis de ambiente, task runners, etc. Podemos usá-lo no lugar do asdf-vm, jenv, nvm, sdkman e outras ferramentas, sim, ele substitui todas elas.
Como instalar?
O processo de instalação do mise é bem simples, basta executarmos o seguinte comando, tanto para Linux quanto para MacOS
curl https://mise.jdx.dev/install.sh | sh
Agora o processo de ativação do mise varia conforme o tipo de shell que você utiliza. Por exemplo para ativarmos ele no zsh
devemos usar da seguinte maneira:
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
Para bash:
echo 'eval "$(~/.local/share/mise/bin/mise activate bash)"' >> ~/.bashrc
Para fish:
echo '~/.local/share/mise/bin/mise activate fish | source' >> ~/.config/fish/config.fish
Para adicionarmos os shims devemos adiciona-los no PATH, com isso temos um maior suporte para IDEs como as da JetBrains e até mesmo o VSCode.
export PATH="$HOME/.local/share/mise/shims:$PATH"
Plugins
Por padrão o mise já vem com plugins para Go, Java, NodeJS, Python e Ruby. Mas podemos instalar plugins com facilidade, por exemplo rodando o fcomando abaixo, adicionamos o plugin para Bun
mise plugin add bun
E com o seguinte comando conseguimos listar todas as versões de bun disponiveis.
mise ls-remote bun
Ps. Todos os plugins do asdf
são compatíveis com o mise.
Demonstração
Para usar de exemplo vou utilizar o JDK, que é com o que eu trabalho diariamente, e eu também utilizo como gerenciador de dependencias o maven, então irei instalar o plugin do Maven, do do Java não tem necessidade, pois faz parte do core do mise.
mise plugin add maven
Vou listar as versões do maven com
mise ls-remove maven
Vi que a última versão disponível é a 3.9.6
para isso eu instalo esta versão usando o comando.
mise install maven@3.9.6
E para configura-lo para o uso global uso o comando
mise global maven@3.9.6
Se eu for na minha home, eu encontro o seguinte arquivo .tool-versions
com o seguinte conteudo.
maven 3.9.6
Agora vou listar todas as versões do Java usando os mesmos comandos, porém quero apenas os JDK que são opendjk.
mise ls-remote java@openjdk
Usando o comando desta maneira eu consigo filtrar a grande lista de JDKs disponíveis, se eu não adicionar o @openjdk
ele ira listar todos os disponíveis, sendo Zulu, GraalVM, adopt, etc.
Usando o comando abaixo eu instalo a versão do java e configuro ele como o global em apenas uma linha comando.
mise install java@openjdk-21.0.1 && mise global java@openjdk-21.0.1
Pronto usando os comandos
mvn --version
java --version
echo $JAVA_HOME
Tenho as seguintes saidas no terminal
❯ mvn --version
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /home/pgjbz/.local/share/mise/installs/maven/3.9.6
Java version: 21.0.1, vendor: Oracle Corporation, runtime: /home/pgjbz/.local/share/mise/installs/java/openjdk-21.0.1
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "6.1.69-1-lts", arch: "amd64", family: "unix"
❯ java --version
openjdk 21.0.1 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)
❯ echo $JAVA_HOME
/home/pgjbz/.local/share/mise/installs/java/openjdk-21.0.1
Legal, mas até ai parece apenas um "apt", "pacman" da vida, porém configurando automaticamente variaveis de ambiente.
Agora vamos ao que é mais legal, usando este meu projeto https://github.com/pgjbz/twitch-loco-bot de 3 anos atrás, usando o Java 11, com o arquivo .tool-versions
dentro dele, configurado com o java openjdk-11.0.1
, podemos simplismente entrar no projeto e digitar o comando
mise install
Feito isso já temos o Java 11 instalado e configurado para este projeto.
Para verifircar-mos vamos usar os comandos.
❯ java --version
openjdk 11.0.1 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
❯ echo $JAVA_HOME
/home/pgjbz/.local/share/mise/installs/java/openjdk-11.0.1
Veja que a variável de ambiente trocou o seu valor, e agora, para voltar ao Java 21? Basta sairmos da pasta do projeto e podemos validar.
❯ java --version
openjdk 21.0.1 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)
❯ echo $JAVA_HOME
/home/pgjbz/.local/share/mise/installs/java/openjdk-21.0.1
Pronto, voltamos a configuração para o Java 21, isso vale para qualquer ferramenta, para go, node, deno, bun, ruby, ocaml, haskell, elixir, etc.
Com essa ferramenta podemos facilitar a padronização nos projetos para o time, sempre deixando tudo com as versões corretas.
Lembrando, o mise
ira priorizar os arquivos .tool-versions
da pasta atual, e caso não exista ele irá utilizar a global.
Top comments (0)