使用 direnv 进行 Java 的切换

direnv是一个可以根据目录切换环境变量的工具,非常适用于同时并行开发多个项目的情况。

如果你使用Mac的话,在~/.direnvrc文件中定义以下函数就可以…

# ~/.direnvrc
use_java() {
    if [ "$#" -ne 1 ]; then
    echo "usage: use java VERSION" >&2
    return 1
  fi
  local v
  v="$1"
  if [ "$v" -le "8" ]; then
    v="1.$v"
  fi
  export JAVA_HOME="$(/usr/libexec/java_home -v "$v")"
  PATH_add $JAVA_HOME/bin
}

在每个项目中,只需要按照这种方式写就可以。

# [プロジェクトのディレクトリ]/.envrc
use_java 11 # JDK 11 を使う

顺便提一下,direnv 还有一个(微妙但)方便的功能,可以将 use_hoge 写成 use hoge ,如下所示。

use java 11

此外,除了Java语言之外,其他语言也提供了use方法的标准支持。

https://github.com/direnv/direnv/blob/master/stdlib.sh 和 https://github.com/direnv/direnv/blob/master/man/direnv-stdlib.1.md 的内容,请以中文中最自然的方式转述。