jenv 工具使用
SpringBoot 3 和 Spring 6 的升级对 Java 版本有了更高的要求,特别是现在基于 Spring 生态的开源仓库基本都基于新版本,所以往往需要维护多版本的 Java
IDEA 可以通过 Platform Settings
中的 SDKs
进行配置,而如果需要使用命令行如 mvn
等操作会比较麻烦,需要切换使用的 Java 版本(配置 profile
是一种思路,甚至 maven 可以实现不同的 module 使用不同的 Java
版本进行编译,如果没有这么精细化的需求在配置文件上操作我认为是有点繁琐的)
这里可以使用 jenv 工具对 Java 环境进行切换
安装 & 配置
可以参考 Github https://github.com/jenv/jenv
我使用的 homebrew 进行安装 https://formulae.brew.sh/formula/jenv#default
1 | brew install jenv |
1 | To activate jenv, add the following to your shell profile e.g. ~/.profile |
安装和配置后可以运行 jenv doctor
进行检查
1 | $ jenv doctor |
使用 jenv versions
可以查看所有的环境,刚进行安装未进行任何配置时应该会有一个默认的
system
配置,可以使用 jenv versions --verbose
查看详细信息
1 | $ jenv versions --verbose |
这里有一个坑,默认的 system 并没有准确识别当前的 Java 环境,有一个对应的 issue
https://github.com/jenv/jenv/issues/422
而对于 system 我还没找到手动配置方式,我觉得不用特别纠结,手动配置非 system 环境也不是不可以
操作
添加环境
1 | jenv add alias /path/to/javaHome |
- alias 是给环境起的别名,到时切换就根据起的别名进行标识;如果不填 jenv 会默认配置别名(这里会有一个 warning,jenv 不希望使用 alias,我觉得不重要,社区现在也认为这个警告后期可能会废弃)
- /path/to/javaHome 是 Java Home 的路径,例如
/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
查看 Java 路径
使用 /usr/libexec/java_home
可以查找并列出系统上安装的所有 Java 开发工具包(JDK)或 Java
运行时环境(JRE)的安装路径,显示所有版本中的最新版本
加上 -V
参数可以显示所有的版本
1 | $ /usr/libexec/java_home -V |
这里就可以拿到 Home 的路径
查看环境
jenv versions
查看所有配置的环境
jenv version
查看当前激活的环境
1 | $ jenv versions |
1 | $ jenv version |
切换
jenv 提供了三种级别的切换操作,切换后就可以修改当前使用的 Java 环境了
- global
- local
- shell
1 | $ jenv global alias |
alias 为 add 环境时设置的别名,即在 versions 中展示的 name
1 | $ jenv version |
oh-my-zsh 设置
为了方便使用可以对 .zshrc
文件进行配置,我配置了
function 和 alias
function
1 | jenv_global_version() { |
alias
1 | alias j8='jenv_global_version Java8' |
效果
1 | $ j17 |
参考
https://github.com/jenv/jenv