
背景
最近由于工作需要, 我總是在不同的scala項目間流動開發(fā). 這就遇到一個很棘手的問題, 這幾個項目用的sbt版本不一致, 老項目用的是 sbt 0.13.15, 新項目用的是 sbt 1.0.2. 寫scala項目最要命的可能就是高版本總是不兼容低版本.
一開始著急干活, 就很暴力的卸載了老版本, 安裝需要的sbt版本. 但是當一天當中都需要處理兩個項目的時候, 這種切換版本的方式就好浪費生命. 起初我是想自己寫個shell來實現(xiàn)自動版本切換的, 但一想估計有人遇到過我這問題, 各種搜索后(我已然忘記了我是怎么搜的了), 發(fā)現(xiàn)了這個很好用的工具 sbtenv.
sbtenv 是什么
官網(wǎng)給了個定義: Groom your sbt environment.
本質(zhì)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.-
創(chuàng)建存放目錄
$> mkdir -p ~/.sbtenv/versions/sbt-1.1.6 -
將下載的壓縮包移到創(chuàng)建好的目錄里
$> mv ~/Downloads/sbt-1.1.6.tgz ~/.sbtenv/versions/sbt-1.1.6 -
解壓并刪除壓縮包 (解壓后sbt命令的磁盤路徑應(yīng)該是
/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
設(shè)置全局sbt版本
使用sbtenv global sbt-1.1.6可以設(shè)置全局的sbt版本.
sbt版本設(shè)置優(yōu)先級
sbt版本設(shè)置生效的優(yōu)先級依次是:
項目的設(shè)置 > 當前目錄的設(shè)置 > 全局的設(shè)置
-
項目的設(shè)置在文件
./project/build.properties中配置.sbt.version=0.13.15 -
當前目錄的設(shè)置在文件
./.sbt-version中配置sbt-0.13.17 -
全局的設(shè)置在文件
~/.sbtenv/version中設(shè)置sbt-1.1.6
參考
日期:2018-06-20 作者:辵鵵