SBT無痛入門指南 頂

  • 2019 年 10 月 4 日
  • 筆記

SBT 是 Scala 的構建工具,全稱是 Simple Build Tool, 類似 Maven 或 Gradle。 SBT 的野心很大,採用Scala程式語言本身編寫配置文件,這使得它稍顯另類,雖然增強了靈活性,但是對於初學者來說同時也增加了上手難度。另外由於SBT默認從國外下載依賴,導致第一次構建非常緩慢,使用體驗非常糟糕! 如果你是一名Scala初學者,本文希望幫你減輕一些第一次使用的痛苦。

本文的主要內容是幫助初學者從頭到尾構建並運行一個Scala項目,重點在於講解中國鏡像倉庫的配置。對於每一個操作步驟,會分別針對Windows、Mac和Linux三個主流作業系統進行講解, 最終幫助你快速構建一個可運行的Scala開發環境。

第一步:安裝SBT

單擊這裡下載 SBT 1.3.0,下載完成後解壓到指定目錄,例如 D:Softwaresbt-1.3.0,然後將 D:Softwaresbt-1.3.0bin 添加至環境變數PATH。SBT 1.3.0 採用 Coursier 以無鎖的方式並行下載依賴,極大地提升了使用體驗!

請確認本機已安裝Java運行環境。

第二步:設置中國倉庫,加快構建過程

1) 設置全局倉庫

首先創建 .sbt 目錄。

如果是Windows系統,則進入CMD執行如下命令:

cd  C:UsersUSER_NAME  mkdir  .sbt  cd  .sbt

如果是Mac或Linux系統,則進入Bash執行如下命令:

cd  ~  mkdir  .sbt  cd  .sbt

然後創建 repositories 文件內容如下,並將文件拷貝到 .sbt 目錄下,

[repositories]  local  huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/  maven-central: https://repo1.maven.org/maven2/  huaweicloud-ivy: https://repo.huaweicloud.com/repository/ivy/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

2) 設置所有項目均使用全局倉庫配置,忽略項目自身倉庫配置

該參數可以通過 Java System Property 進行設置。在 SBT 中,有三種方法可以設置 Java System Property,可以根據需要自行選擇。

方法一:修改SBT配置文件(推薦)

提醒一下,  sbt-1.3.0/conf/ 目錄下有兩個配置文件,  sbtconfig.txt 僅適用於  Windows 平台,而  sbtopts 僅適用於  Mac/Linux 平台。

針對 Windows 平台,打開 sbt-1.3.0/conf/sbtconfig.txt 文件,在末尾新增一行,內容如下:

-Dsbt.override.build.repos=true

針對 Mac/Linux 平台,打開 sbt-1.3.0/conf/sbtopts 文件,在末尾新增一行,內容如下:

-Dsbt.override.build.repos=true

方法二: 設置環境變數

在 Windows 上通過 set 命令進行設置,

set SBT_OPTS="-Dsbt.override.build.repos=true"

在 Mac/Linux 上使用 export 命令進行設置,

export SBT_OPTS="-Dsbt.override.build.repos=true"

方法三: 傳入命令行參數

執行 sbt 命令時, 直接在命令後面加上配置參數,

sbt -Dsbt.override.build.repos=true

注意,如果由於某種原因,  repositories 文件並不在默認的  .sbt 目錄下,則需要通過  -Dsbt.repository.config 指定  repositories 文件的具體位置,該參數的三種設置方法同  -Dsbt.override.build.repos 。例如採用修改SBT配置文件方式  (推薦),則打開  sbt-1.3.0confsbtconfig.txt 文件,在末尾新增如下內容:

-Dsbt.override.build.repos=true  -Dsbt.repository.config=path_to_repositories_file

第三步:構建並運行第一個Scala項目

1)修改項目SBT構建版本

單擊 hello-scala 下載一個最簡單的Scala項目,並解壓到指定目錄,如 D:idea-projects 。由於SBT 1.3.0包含了多項性能提升,如果是已有的本地項目,請手動將項目的SBT構建版本改成1.3.0 。具體方法為:打開 project/build.properties 文件,將內容修改如下:

sbt.version = 1.3.0

在命令行中切換至 hello-scala 目錄,執行sbt命令進入 sbt shell 

第一次進入  sbt shell 時,由於需要下載相關依賴,大概需要幾十秒時間,第二次及以後進入  sbt shell 會很快。

檢查當前項目的SBT構建版本是否為1.3.0,

sbt:hello-scala> sbtVersion  [info] 1.3.0  sbt:hello-scala>

2)確認全局倉庫是否已經覆蓋項目自身倉庫

sbt:hello-scala> show overrideBuildResolvers  [info] true

確認倉庫列表是否與 ~/.sbt/repositories 文件一致:

sbt:hello-scala> show fullResolvers

3)編譯並運行

確認無誤後執行編譯命令,

sbt:hello-scala> compile  [info] Compiling 1 Scala source to D:idea-projectshello-scalatargetscala-2.12classes ...  [success] Total time: 4 s, completed 2019-9-16 11:39:41

查看SBT本地快取,確認一下是否從中國倉庫下載依賴。針對不同的作業系統,對應的快取路徑如下:

  • Windows快取路徑是 %LOCALAPPDATA%CoursierCachev1 ,即如果用戶名是joymufeng,則完整路徑是 C:UsersjoymufengAppDataLocalCoursierCachev1 。
  • Linux快取路徑為 ~/.cache/coursier/v1 
  • Mac快取路徑為 ~/Library/Caches/Coursier/v1 。

下面是Windows快取截圖:

最後執行項目,

(adsbygoogle = window.adsbygoogle || []).push({});