jvr: 切换JDK 版本竟如此丝滑
0.引言
各位小伙伴在开发过程中是否遇到过, 不同项目需要切换 JDK 版本号的情况(当然:通过 maven 配置等方式也可以解决)?
今天为大家带来: jvr.
注意: 业界也有比较成熟的解决方案, 比如:
sdkmanmise...
1.安装
注意: 需要将任何形式获取的二进制放到系统
$PATH下
$ cargo install jvr除外
- 已自行处理
1.1.Github
直接从 Github 下载预编译好的二进制(根据平台执行选择) 传送门
1.2.crates.io
$ cargo install jvr
# Or
$ cargo install --git https://github.com/photowey/jvr.git [--branch main]
1.3.源码编译
$ git clone https://github.com/photowey/jvr.git
$ cd jvr
$ cargo build --release
2.介绍
2.1.初始化 JAVA_HOME
1.说明: 当执行
$ jvr init时
- 如果-系统还未创建
JAVA_HOME环境变量, 则jvr会自动创建并加入到系统$PATH中- 如果-系统已创建
JAVA_HOME环境变量, 则jvr会尝试替换,必确定是否需要加入到系统$PATH中2.平台:
Windows
- 在
Windows平台,jvr操作的用户级环境变量而非系统级环境变量Unix等
- 如果是类
Unix平台,jvr会尝试推断并将变量写入(如果需要)
~/.bashrc- 默认~/.zshrc...3.环境变量管理
- 建议在使用
jvr之前, 移除之前的JAVA_HOME以及$PATH,全权交由jvr接管
$ jvr init /path/to/your/java_home
2.2.管理 JDK 版本
$ jvr add jdk8 /path/to/your/java_home/jdk8
$ ...
$ $ jvr add jdk25 /path/to/your/java_home/jdk25
2.3.查看 JDK 列表
$ jvr list
# 其中: Current 栏: * 表示当前真在使用的 JDK 版本
jvr list
+---+-------+-------------------------------+---------+
| # | Alias | Path | Current |
+---+-------+-------------------------------+---------+
| 1 | jdk8 | /path/to/your/java_home/jdk8 | - |
+---+-------+-------------------------------+---------+
| 2 | jdk11 | /path/to/your/java_home/jdk11 | - |
+---+-------+-------------------------------+---------+
| 3 | jdk17 | /path/to/your/java_home/jdk17 | - |
+---+-------+-------------------------------+---------+
| 4 | jdk21 | /path/to/your/java_home/jdk21 | - |
+---+-------+-------------------------------+---------+
| 5 | jdk25 | /path/to/your/java_home/jdk25 | * |
+---+-------+-------------------------------+---------+
| 6 | gvm21 | /path/to/your/java_home/gvm21 | - |
+---+-------+-------------------------------+---------+
2.4.切换 JDK 版本
- 无论是在
Windows还是在其他类Unix平台均不需要管理员权限,即可进行切换
- 您是否还记得
nvm切换版本的时候需要切换管理员角色- 任何平台
- 却换之后
JDK立即生效
- 即便是: 类
Unix平台也不需要再执行$ source ~/.bashrc等命令
# 根据别名切换 $ jvr add [alias] $java_home
$ jvr use jdk25
$ jvr list
+---+-------+-------------------------------+---------+
| # | Alias | Path | Current |
+---+-------+-------------------------------+---------+
| 1 | jdk8 | /path/to/your/java_home/jdk8 | - |
+---+-------+-------------------------------+---------+
| 2 | jdk11 | /path/to/your/java_home/jdk11 | - |
+---+-------+-------------------------------+---------+
| 3 | jdk17 | /path/to/your/java_home/jdk17 | - |
+---+-------+-------------------------------+---------+
| 4 | jdk21 | /path/to/your/java_home/jdk21 | - |
+---+-------+-------------------------------+---------+
| 5 | jdk25 | /path/to/your/java_home/jdk25 | * |
+---+-------+-------------------------------+---------+
| 6 | gvm21 | /path/to/your/java_home/gvm21 | - |
+---+-------+-------------------------------+---------+
$ jvr use jdk11
$ jvr list
+---+-------+-------------------------------+---------+
| # | Alias | Path | Current |
+---+-------+-------------------------------+---------+
| 1 | jdk8 | /path/to/your/java_home/jdk8 | - |
+---+-------+-------------------------------+---------+
| 2 | jdk11 | /path/to/your/java_home/jdk11 | * |
+---+-------+-------------------------------+---------+
| 3 | jdk17 | /path/to/your/java_home/jdk17 | - |
+---+-------+-------------------------------+---------+
| 4 | jdk21 | /path/to/your/java_home/jdk21 | - |
+---+-------+-------------------------------+---------+
| 5 | jdk25 | /path/to/your/java_home/jdk25 | - |
+---+-------+-------------------------------+---------+
| 6 | gvm21 | /path/to/your/java_home/gvm21 | - |
+---+-------+-------------------------------+---------+
# 是否非常丝滑
3.说明
jvr并没有复杂的命令或操作步骤,保持简单jvr暂时,并不会像mise或sdkman等支持项目级别JDK- 比如: 通过
.jvrrc实现
- 比如: 通过
4.Q&A
4.1.$ jvr install $version?
为什么没有 $ jvr install $version 这个子命令?
- 主要是: 部分
JDK下载oracle需要登录 IDEA本身也支持JDK下载- 如果自行收录不同版本的
JDK, 可能会卷入安全问题的自证漩涡 - …
故: 基于以上问题 jvr 从设计之处就没有考虑支持下载(install) 子命令
保持设计初心: jvr 只做 JDK 版本管理与切换
如果您在使用的过程中遇到任何问题, 请联系我: 传送门 You know me.