Scala是否具备类似nvm的CLI快速版本切换能力?
如何在Shell中快速切换Scala版本(类似nvm的CLI方式)
当然有啦!和nvm管理Node版本一样,Scala生态里有几个实用工具能帮你在当前Shell会话中快速切换不同的Scala版本,直接通过CLI启动REPL或运行代码,完全不需要依赖SBT的版本配置。下面给你介绍最常用的几个方案:
1. 使用SDKMAN!(最受欢迎的JVM生态版本管理器)
SDKMAN!专门针对JVM系语言和工具做版本管理,操作逻辑和nvm高度相似,上手成本极低:
- 安装SDKMAN!:在终端执行以下命令,完成后重启Shell或执行初始化脚本生效:
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" - 安装目标Scala版本:比如安装你需要的2.12.10:
sdk install scala 2.12.10 - 在当前Shell切换版本:执行这条命令后,当前会话的
scala命令就会指向2.12.10版本:sdk use scala 2.12.10 - 启动对应版本的REPL:直接敲
scala,就能看到你想要的提示:Welcome to Scala 2.12.10 (OpenJDK 64-Bit Server VM, Java 1.8.0_202).
Type in expressions for evaluation. Or try :help. - 额外技巧:如果想让所有新Shell会话默认使用这个版本,可以执行:
sdk default scala 2.12.10
2. 使用scalaenv(类nvm/rbenv的轻量版本管理器)
scalaenv完全复刻了nvm的设计思路,通过修改Shell环境变量实现版本切换,适合偏好简洁工具的用户:
- 安装scalaenv:先克隆仓库到本地,再配置Shell环境:
git clone https://github.com/scalaenv/scalaenv.git ~/.scalaenv echo 'export PATH="$HOME/.scalaenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(scalaenv init -)"' >> ~/.bashrc source ~/.bashrc # 或直接重启Shell - 安装scala-build插件:用来编译安装指定的Scala版本:
git clone https://github.com/scalaenv/scala-build.git ~/.scalaenv/plugins/scala-build - 安装目标版本:
scalaenv install 2.12.10 - 切换版本:
- 仅当前Shell会话生效:
scalaenv shell 2.12.10 - 当前目录及子目录自动生效(生成
.scala-version标记文件):scalaenv local 2.12.10
- 仅当前Shell会话生效:
- 启动REPL:敲
scala即可进入对应版本的交互环境。
3. 使用Coursier(Scala官方推荐的包管理器)
Coursier是Scala官方主推的包管理工具,也支持快速安装和切换Scala版本,适合经常使用Scala生态工具的用户:
- 安装Coursier:执行初始化脚本完成安装:
curl -fL https://github.com/coursier/coursier/releases/latest/download/cs-x86_64-pc-linux.gz | gzip -d > cs && chmod +x cs && ./cs setup - 安装指定Scala版本:
cs install scala:2.12.10 - 快速启动对应版本REPL:不需要切换全局版本,直接用以下命令一键启动2.12.10的REPL:
这条命令会直接打开你想要的版本交互环境,省去手动切换的步骤。cs scala -S 2.12.10
内容的提问来源于stack exchange,提问作者Mario Galic
相关产品推荐
相关产品推荐

