學習sbtenv


sbt_logo.png

背景

最近由于工作需要, 我總是在不同的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很方便的, 具體步驟如下:

  1. 安裝

    brew install sbtenv
    
  2. 添加 ~/.sbtenv/bin 到 $PATH

    echo 'export PATH="${HOME}/.sbtenv/bin:${PATH}"' >> ~/.bash_profile
    
  3. 添加 sbtenv init 到 shell

    echo 'eval "$(sbtenv init -)"' >> ~/.bash_profile
    
  4. 重啟shell, 檢驗sbtenv是否安裝成功

    type sbtenv
    sbtenv is a shell function from /Users/qyf404/.bash_profile
    

用sbtenv安裝不同版本的sbt

光把sbtenv安裝了, 還不能工作呢, 還需要安裝你需要的sbt.

  1. 使用命令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
    
  2. 安裝指定版本的sbt

    $> sbtenv install sbt-0.13.17
    
  3. 檢查是否安裝成功, 使用命令sbtenv versions能查看本機安裝的所有sbt版本.

    $> sbtenv versions
    system
    sbt-0.13.17
    

用sbtenv切換不同版本的sbt

  1. 當前工作目錄切換sbt版本使用命令sbtenv local sbt-0.13.17. (切換后會在當前目錄增加一個.sbt-version的文件來記錄使用的sbt版本)

    $> sbtenv local sbt-0.13.17
    
  2. 檢查是否切換成功使用命令sbtenv version.

    $> sbtenv version
    sbt-sbt-0.13.17 (set by /Users/yfqi/.sbt-version)
    

進階

手動安裝sbt

有時候sbtenv install -l里面沒有我們要安裝的sbt版本, 這時我們可以采取手動安裝的方式.

  1. github上找到我們要安裝的版本.

  2. 下載tgz的壓縮包, 比如我下的是 sbt-1.1.6.tgz.

  3. 創(chuàng)建存放目錄

    $> mkdir -p ~/.sbtenv/versions/sbt-1.1.6
    
  4. 將下載的壓縮包移到創(chuàng)建好的目錄里

    $> mv ~/Downloads/sbt-1.1.6.tgz ~/.sbtenv/versions/sbt-1.1.6
    
  5. 解壓并刪除壓縮包 (解壓后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
    
  6. 檢查是否安裝成功

    $> 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
    

參考

sbtenv github

日期:2018-06-20 作者:辵鵵

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容