一个工具管理你的所有 SDK 版本!

众所周知,我们在面对同一个 SDK 的不同版本时,需要使用到不同的工具来管理,例如:

  • Java:JEnv
  • NodeJs:nvm
  • ...

它们的原理都是基于系统的软连接,让环境变量指向一个软连接来实现切换的效果。那么有没有一个通用的工具,能够管理软连接,从而实现所有 SDK 的切换呢?

有!它就是:

symbolic-link-manager

这个工具专门用于管理软连接,最大程度上进行了抽象,理论上可以管理所有类型的 SDK 版本。

安装

进入 GitHub Releases 中,下载对应系统的可执行文件,然后将其放到任意空文件夹中。

将可执行文件重命名为 slm.exe (Windows) / slm (Linux),之后添加如下环境变量:

SLINK_MANAGER_HOME: 可执行文件所在目录。

使用样例

切换 Java 版本

假设在系统中有两个 Java 版本:

  • C:\Program Files\Java\jdk-17
  • C:\Program Files\Java\jdk8u432-b06

依次使用下列命令来管理这两个版本:

shell 复制代码
# 声明一个(软)链接,名称为 java
slm add link java

# 为链接打标签
slm add tag java 17 "C:\Program Files\Java\jdk-17"
slm add tag java 8 "C:\Program Files\Java\jdk8u432-b06"

# 切换版本
slm use java 17

此时将会在 $SLINK_MANAGER_HOME/app/ 目录创建一个名称为 java 的软连接。之后你需要将 JAVA_HOME 的值设置为对应的软连接路径:

  • Windows: %SLINK_MANAGER_HOME%\app\java
  • Linux: $SLINK_MANAGER_HOME/app/java

这里还需确保你已经添加了 %JAVA_HOME%/bin (Windows) / $JAVA_HOME/bin (Linux) 到 Path 中。

仅第一次设置时需要重新打开终端才会生效,之后切换版本时不需要再重新打开。

设置完成后,查看 Java 版本:

当切换 Java 版本后自带切换 Maven 版本

除了单纯的切换某个 SDK 版本外,还支持"连锁切换"。

例如在 Java17 下使用 Maven 3.8.8,在 Java8 下使用 Maven 3.6.3。在切换 Java 版本时能够同时切换 Maven 版本。

Maven 目录:

  • D:\DevelopmentTool\apache-maven-3.6.3
  • D:\DevelopmentTool\apache-maven-3.8.8

管理这两个版本:

shell 复制代码
# 声明一个(软)链接,名称为 maven
slm add link maven

# 为链接打标签
slm add tag maven 3.6 "D:\DevelopmentTool\apache-maven-3.6.3"
slm add tag maven 3.8 "D:\DevelopmentTool\apache-maven-3.8.8"

# 和 Java 绑定(Java 的链接需要提前创建)
slm add bind java:17 maven:3.8
slm add bind java:8 maven:3.6

# 先使用一次,不然不会创建软连接
slm use maven 3.6

执行完成后,将环境变量 MAVEN_HOME 设置为 %SLINK_MANAGER_HOME%\app\maven (Windows).

此时完成设置,切换 Java 版本将会跟着切换 Maven 版本:

切换 NodeJs 版本

同样的,你也可以管理 NodeJs 版本,相比与 nvm,主要是少了自动下载功能。

NodeJS 目录:

  • D:\DevelopmentTool\symbolic-link-manager\sdk\nodejs\node-v22.11.0-win-x64
  • D:\DevelopmentTool\symbolic-link-manager\sdk\nodejs\node-v20.18.0-win-x64
    管理这两个版本:
shell 复制代码
slm add link node

slm add tag node 20 "D:\DevelopmentTool\symbolic-link-manager\sdk\nodejs\node-v20.18.0-win-x64"
slm add tag node 22 "D:\DevelopmentTool\symbolic-link-manager\sdk\nodejs\node-v22.11.0-win-x64"

slm use node 20

添加环境变量(Path): %SLINK_MANAGER_HOME%\app\node (Windows).

总结

理论上该工具支持所有 SDK,原理我们在前面也已经说过了,就是一个软连接管理工具,欢迎大家使用,提意见!