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({});