学习sbtenv

背景
最近由于工作需要, 我总是在不同的scala项目间流动开发. 这就遇到一个很棘手的问题, 这几个项目用的sbt版本不一致, 老项目用的是 sbt 0.13.15, 新项目用的是 sbt 1.0.2. 写scala项目最要命的可能就是高版本总是不兼容低版本.
一开始着急干活, 就很暴力的卸载了老版本, 安装需要的sbt版本. 但是当一天当中都需要处理两个项目的时候, 这种切换版本的方式就好浪费生命. 起初我是想自己写个shell来实现自动版本切换的, 但一想估计有人遇到过我这问题, 各种搜索后(我已然忘记了我是怎么搜的了), 发现了这个很好用的工具 sbtenv.
sbtenv 是什么
官网给了个定义: Groom your sbt environment.
本质sbtenv干的事情就像nvm, sbtenv能很轻松的切换sbt版本, 这样就可以不同的项目用不同版本的sbt, 同时本机上可以装多个版本的sbt.
sbtenv 安装
使用brew安装sbtenv很方便的, 具体步骤如下:
安装
brew install sbtenv
添加 ~/.sbtenv/bin 到 $PATH
echo 'export PATH="${HOME}/.sbtenv/bin:${PATH}"' >> ~/.bash_profile
添加 sbtenv init 到 shell
echo 'eval "$(sbtenv init -)"' >> ~/.bash_profile
重启shell, 检验sbtenv是否安装成功
type sbtenv
sbtenv is a shell function from /Users/qyf404/.bash_profile
用sbtenv安装不同版本的sbt
光把sbtenv安装了, 还不能工作呢, 还需要安装你需要的sbt.
使用命令
sbtenv install -l查询能安装的sbt版本$> sbtenv install -l
All available versions:
sbt-0.13.15
sbt-0.13.16
sbt-0.13.17
sbt-0.13.2
sbt-0.13.5
sbt-0.13.6
sbt-0.13.7
sbt-0.13.8
sbt-0.13.9
sbt-1.0.0
sbt-1.0.1
sbt-1.0.2
sbt-1.0.3
sbt-1.0.4
sbt-1.1.0
sbt-1.1.1
安装指定版本的sbt
$> sbtenv install sbt-0.13.17
检查是否安装成功, 使用命令
sbtenv versions能查看本机安装的所有sbt版本.$> sbtenv versions
system
sbt-0.13.17
用sbtenv切换不同版本的sbt
当前工作目录切换sbt版本使用命令
sbtenv local sbt-0.13.17. (切换后会在当前目录增加一个.sbt-version的文件来记录使用的sbt版本)$> sbtenv local sbt-0.13.17
检查是否切换成功使用命令
sbtenv version.$> sbtenv version
sbt-sbt-0.13.17 (set by /Users/yfqi/.sbt-version)
进阶
手动安装sbt
有时候sbtenv install -l里面没有我们要安装的sbt版本, 这时我们可以采取手动安装的方式.
去github上找到我们要安装的版本.
下载tgz的压缩包, 比如我下的是
sbt-1.1.6.tgz.创建存放目录
$> mkdir -p ~/.sbtenv/versions/sbt-1.1.6
将下载的压缩包移到创建好的目录里
$> mv ~/Downloads/sbt-1.1.6.tgz ~/.sbtenv/versions/sbt-1.1.6
解压并删除压缩包 (解压后sbt命令的磁盘路径应该是
/Users/qyf404/.sbtenv/versions/sbt-1.1.6/sbt/bin)$> cd ~/.sbtenv/versions/sbt-1.1.6
$> tar xf sbt-1.1.6.tgz && rm -f *.tgz
$> ls
sbt
检查是否安装成功
$> sbtenv versions
system
sbt-0.13.17
sbt-1.1.6
设置全局sbt版本
使用sbtenv global sbt-1.1.6可以设置全局的sbt版本.
sbt版本设置优先级
sbt版本设置生效的优先级依次是:
项目的设置 > 当前目录的设置 > 全局的设置
项目的设置在文件
./project/build.properties中配置.sbt.version=0.13.15当前目录的设置在文件
./.sbt-version中配置sbt-0.13.17
全局的设置在文件
~/.sbtenv/version中设置sbt-1.1.6
参考
日期:2018-06-20 作者:辵鵵
学习sbtenv的更多相关文章
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Unity3d学习 制作地形
这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
随机推荐
- windows Ctrl + Alt + 方向键 取消屏幕反转
1.在桌面右击 2.再次右击桌面 3.单击选项和支持 4.点击禁用和应用
- Re:LieF ~親愛なるあなたへ~ 后感
遇到烦恼就能有个安逸的地方逃避.这个想法真好.遗憾现实并不能如此.若是觉得这款纯爱作有些许的感人之处,那定时因为受众玩家正在通过玩游戏来逃避现实.“虚拟世界的感情是真实的.” 这件事在旁人看来或许是笑 ...
- Oracle EBS 查询物料报错
- 第六章 函数、谓词、CASE表达式 6-3 CASE表达式
一.什么是CASE表达式 CASE表达式是一种运算功能,意味着CASE表达式也是函数的一种. 它是SQL中数一数二的重要功能.必须好好学习掌握. CASE表达式是在区分情况时使用的,这种情况的区分 ...
- vim和xshell配色
xshell配色: http://www.hookr.cn/xshell-pei-se.html vim配色: 参考该文中的配置方法,包括设置256色等.http://www.cnblogs.com/ ...
- 使用Docker构建AspNetCore应用
#Build Image Stage FROM microsoft/aspnetcore-build:2 AS build-env WORKDIR /api # 以下为优化还原,因为项目文件不常变动D ...
- 解决linux buffer/cache 消耗内存过高引发的问题
工作中接到DBA报障某台服务器 跑一些大的数据,服务器就无法远程连接,报错,抓过日志叫DELL工程师检测也没问题,系统也重装过, 现在些一些较大的数据就会报如 图错误,由于服务器远在异地城市IDC机房 ...
- JavaWeb定时器-Spring3.x及更高版本Task使用
大背景 现代的 Web 应用程序框架在范围和复杂性方面都有所发展,应用程序的每个底层组件也必须相应地发展.作业调度是现代系统中对 Java 应用程序的一般要求,而且也是对 Java 开发人员一贯的要求 ...
- Hyper-v 中 CentOS 连接外网之有线网卡
一.打开虚拟机交换管理器,查看默认的虚拟交换机 如果不是内部网络,则需要新建一个虚拟交换机,新的交换机应该使用内部网络: 二.配置虚拟机使用的交换机.如果 “默认开关” 不是内部网络,需要使用自己新创 ...
- SDN2017 第一次作业
作业链接 阅读LearningNetworkProgramming.pdf,思考后回答以下问题: 你会选择作 网络编程 方向的程序员吗?为什么? 请搜寻并列出至少3个有影响力的中英文SDN的门户网站. ...