目錄
sbt 參考手冊
安裝
入門
sbt 的功能
其他
sbt 入門
安裝 sbt
提示與注意事項
在 macOS 上安裝 sbt
使用 cs setup 安裝 sbt
安裝 JDK
SDKMAN!
從通用套件安裝
從第三方套件安裝
Homebrew
在 Windows 上安裝 sbt
使用 cs setup 安裝 sbt
安裝 JDK
從通用套件安裝
Windows 安裝程式
從第三方套件安裝
Scoop
Chocolatey
在 Linux 上安裝 sbt
使用 cs setup 安裝 sbt
從 SDKMAN 安裝
安裝 JDK
從通用套件安裝
Ubuntu 和其他基於 Debian 的發行版
Red Hat Enterprise Linux 和其他基於 RPM 的發行版
Gentoo
sbt 範例
建立最小的 sbt 建置
啟動 sbt shell
退出 sbt shell
編譯專案
在程式碼變更時重新編譯
建立原始碼檔案
執行先前的指令
取得幫助
執行您的應用程式
從 sbt shell 設定 ThisBuild / scalaVersion
將會話儲存到 build.sbt
為您的專案命名
重新載入建置
將 toolkit-test 加入 libraryDependencies
執行測試
持續執行增量測試
撰寫測試
讓測試通過
新增程式庫依賴
使用 Scala REPL
建立子專案
列出所有子專案
編譯子專案
將 toolkit-test 加入子專案
廣播指令
讓 hello 依賴於 helloCore
使用 uJson 解析 JSON
新增 sbt-native-packager 外掛程式
重新載入並建立 .zip 發行版
將您的應用程式 Docker 化
設定版本
暫時切換 scalaVersion
檢查 dist 工作
批次模式
sbt new 指令
致謝
目錄結構
基礎目錄
原始碼
sbt 建置定義檔案
建置支援檔案
建置產品
設定版本控制
執行
sbt shell
批次模式
持續建置與測試
常用指令
Tab 鍵補全
sbt shell 歷史記錄
IDE 整合
將 sbt 作為 Metals 建置伺服器使用
在 VS Code 上進行互動式除錯
登入 sbt 會話
匯入到 IntelliJ IDEA
使用 IntelliJ IDEA 進行互動式除錯
將 sbt 作為 IntelliJ IDEA 建置伺服器使用(進階)
登入 sbt 會話
使用 Neovim 作為 Metals 前端(進階)
跳到定義
懸停
列出診斷
使用 Neovim 進行互動式除錯
登入 sbt 會話
建置定義
指定 sbt 版本
什麼是建置定義?
build.sbt 如何定義設定
鍵
類型
內建鍵
自訂鍵
工作鍵與設定鍵
列出所有可用的設定鍵和工作鍵
定義工作與設定
工作和設定的類型
sbt shell 中的鍵
build.sbt 中的 import
空的 .sbt 建置定義
新增程式庫依賴
多專案建置
多個子專案
建置範圍設定
通用設定
依賴
聚合
類別路徑依賴
每個配置的類別路徑依賴
專案間依賴
預設根專案
以互動方式瀏覽專案
通用程式碼
附錄:子專案建置定義檔案
工作圖
術語
宣告對其他工作的依賴
內聯 .value 呼叫
檢查工作
定義依賴其他設定的工作
定義依賴其他設定的設定
build.sbt DSL 的重點是什麼?
Make 簡介
Rake
混合流程型程式設計的優點
摘要
範圍
關於鍵的完整說明
範圍軸
依子專案軸設定範圍
依配置軸設定範圍
依工作軸設定範圍
零範圍組件
在建置定義中引用範圍
從 sbt shell 引用範圍鍵
sbt shell 中範圍鍵表示法的範例
檢查範圍
何時指定範圍
建置級設定
範圍委派
附加值
附加到先前的值:+= 和 ++=
設定未定義時
基於其他鍵值的工作
附加依賴項:+= 和 ++=
範圍委派(.value 查找)
範圍委派規則
規則 1:範圍軸優先順序
規則 2:工作軸委派
規則 3:配置軸搜尋路徑
規則 4:子專案軸搜尋路徑
再次說明範圍軸優先順序
inspect 指令會列出委派
.value 查找 vs 動態調度
程式庫依賴
未管理的依賴
管理的依賴
libraryDependencies 鍵
使用 %% 取得正確的 Scala 版本
Ivy 修訂版本
解析器
覆寫預設解析器
每個配置的依賴
使用外掛程式
什麼是外掛程式?
宣告外掛程式
啟用和停用自動外掛程式
全域外掛程式
可用的外掛程式
自訂設定與工作
定義鍵
實作工作
工作的執行語義
工作依賴項的重複資料刪除
清除工作
使用純 Scala
將它們轉換為外掛程式
組織建置
sbt 是遞迴的
在一個位置追蹤依賴
何時使用 .scala 檔案
定義自動外掛程式
入門摘要
sbt:核心概念
進階說明
常見問題
專案資訊
sbt 這個名稱代表什麼?為什麼不應該寫成 SBT?
如何取得幫助?
如何回報錯誤?
如何提供協助?
使用方式
我最後的指令沒有執行,但我看不到任何解釋。為什麼?
如何停用輸出中的 ansi 碼?
如何使用 sbt 專案組態(依賴等)啟動 Scala 解譯器 (REPL)?
建置定義
什麼是 :=、+= 和 ++= 方法?
什麼是 % 方法?
ThisBuild / scalaVersion 是什麼意思?
什麼是 ModuleID、Project、?
如何將檔案新增到 jar 套件?
如何產生原始碼或資源?
如果輸入檔案未變更,工作如何避免重做?
擴充 sbt
如何新增新的依賴組態?
如何新增測試組態?
除了 run 之外,如何建立自訂的執行工作?
我應該如何表達對外部工具(例如 proguard)的依賴?
如何動態變更 sbt 的類別路徑?
動態類別路徑擴充範例
如何在專案載入或卸載時採取動作?
專案載入/卸載掛鉤範例
錯誤
專案載入時,參考到未初始化的設定
依賴管理
如何解決校驗和錯誤?
我新增了一個外掛程式,現在我的交叉編譯失敗了!
其他
在哪裡可以找到 1.9.8 的外掛程式?
一般資訊
致謝
社群外掛程式
sbt 組織
社群 Ivy 儲存庫
從 sbt 0.13 交叉建置外掛程式
適用於 sbt 1.0(包括 RC-x)的外掛程式
程式碼格式化外掛程式
文件外掛程式
單一 jar 外掛程式
發布外掛程式
部署整合外掛程式
公用程式和系統外掛程式
IDE 整合外掛程式
測試外掛程式
程式庫依賴外掛程式
Web 和前端開發外掛程式
資料庫外掛程式
特定框架的外掛程式
程式碼產生器外掛程式
靜態程式碼分析外掛程式
程式碼覆蓋率外掛程式
建立新專案外掛程式
內部外掛程式
驗證外掛程式
語言支援外掛程式
社群儲存庫政策
Bintray 適用於外掛程式
使用 Sonatype
Sonatype 設定
sbt 設定
步驟 1:PGP 簽名
步驟 2:sbt-pgp
步驟 3:認證
步驟 4:設定 build.sbt
步驟 5:發布
選用步驟
sbt-sonatype
發布提示
與發布流程整合
為 sbt 做出貢獻
文件
變更
從 sbt 0.13.x 遷移
遷移 case class .copy(...)
SbtPlugin
sbt 版本特定的原始碼目錄
遷移到斜線語法
從 sbt 0.12 風格遷移
遷移 sbt 0.12 風格運算子
從元組擴充功能遷移
在您使用 .dependsOn、.triggeredBy 或 .runBefore 時遷移
在您需要設定 Task 時遷移
使用 InputKey 遷移
從 Build 特徵遷移
從 Resolver.withDefaultResolvers 遷移
sbt 1.4.x 版本
sbt 1.4.1
sbt 1.4.0
建置伺服器通訊協定 (BSP) 支援
如何使用 BSP 匯入到 IntelliJ
如何匯入到 VS Code + Metals
原生精簡用戶端
ThisBuild / versionScheme
VirtualFile + RemoteCache
建置程式碼檢查
條件式工作
增量建置管線
sbt-dependency-graph 已加入原始碼
具有相容性影響的修正
其他更新
參與
sbt 1.3.x 版本
sbt 1.3.0
具有相容性影響的變更
使用 Coursier 的程式庫管理
具有 ClassLoader 分層的 Turbo 模式
IO 改善
Glob
監看改善
建置定義原始碼監看
自訂增量工作
超級 shell
追蹤
SemanticDB 支援
print 指令
附加 Function1
JDK 11 支援
其他錯誤修正和改善
參與
sbt 1.2.x 版本
sbt 1.2.1
向前二進位相容性中斷
專案 Foo 參考未知的組態 bar
其他錯誤修正
貢獻者
sbt 1.2.0
用於外掛程式開發的 SbtPlugin
交叉 JDK 分支
scalaVersion 過濾的聚合
複合專案
專案矩陣
語義版本選取器 API
addPluginSbtFile 指令
可擴充的 sbt 伺服器
精簡用戶端
具有相容性影響的變更
其他錯誤修正和改善
內部
貢獻者
sbt 1.1.x 版本
sbt 1.1.6
錯誤修正
貢獻者
sbt 1.1.5
錯誤修正
改善
監看者改善
VS Code 擴充功能更新
sbt 範例
貢獻者
sbt 1.1.4
錯誤修正
改善
macOS 上的觸發執行
以待命方式執行 sbt
載入效能改善
貢獻者
sbt 1.1.2
錯誤修正
改善
內部
貢獻者
sbt 1.1.1
錯誤修正
改善
autoStartServer 設定
貢獻者
sbt 1.1.0
功能、修正、具有相容性影響的變更
功能
修正
改善
用於 sbt shell 和 build.sbt 的統一斜線語法
sbt 伺服器
VS Code 擴充功能
使用 project/build.properties 過濾指令碼測試
貢獻者
sbt 1.0.x 版本
sbt 1.0.4
錯誤修正
增強
內部
貢獻者
sbt 1.0.3
錯誤修正
改善
替代監看模式
貢獻者
sbt 1.0.2
錯誤修正
內部
貢獻者
sbt 1.0.1
錯誤修正
WatchSource
sbt 1.0.0
功能、修正、具有相容性影響的變更
功能
修正
改善
內部
主要變更的詳細資訊
Zinc 1:基於類別的名稱雜湊
Zinc API 變更
sbt 伺服器:用於工具整合的 JSON API
靜態驗證 build.sbt
驅逐警告呈現
sbt-cross-building
CopyOptions
程式庫管理 API 和平行工件下載
Zinc 內部儲存的二進位格式
依賴鎖定
貢獻者
詳細主題
使用 sbt
指令列參考
關於指令列的說明
專案級工作
組態級工作
通用指令
用於管理建置定義的指令
主控台專案
描述
存取設定
範例
評估工作
範例
狀態
範例
交叉建置
簡介
發布慣例
使用交叉建置的程式庫
使用 sbt-projectmatrix 進行交叉建置專案
有狀態地交叉建置專案
根據 Scala 版本變更設定
Scala 版本專屬的原始碼目錄
與 Java 專案進行交叉建置
切換 Scala 版本
交叉發佈
覆寫發佈慣例
Scala 3 特定的交叉版本
更多關於使用交叉建置函式庫的資訊
關於 sbt-release 的注意事項
與組態系統互動
選取命令、任務和設定
選取組態
任務特定的設定
探索設定和任務
值和提供者
相關設定
依賴
請求的依賴
實際的依賴
委派
觸發執行
編譯
測試
執行多個命令
建置原始碼
清除畫面
組態
腳本模式
sbt 腳本執行器
範例
sbt 伺服器
組態
語言伺服器協定 3.0
伺服器模式
伺服器探索和驗證
初始化請求
textDocument/publishDiagnostics 事件
textDocument/didSave 事件
sbt/exec 請求
sbt/setting 請求
sbt/completion 請求
sbt/cancelRequest
了解增量重新編譯
sbt 啟發式演算法
如何利用 sbt 啟發式演算法
組態
類別路徑、原始碼和資源
基礎
非受管 vs. 受管
依名稱排除原始碼檔案
外部 vs. 內部
鍵
範例
編譯器外掛程式支援
Continuations 外掛程式範例
版本特定的編譯器外掛程式範例
組態 Scala
自動管理的 Scala
組態 scala-library 依賴
組態額外的 Scala 依賴
組態 Scala 工具依賴
切換至本機 Scala 版本
從本機目錄使用 Scala
與受管理的依賴混合使用
僅使用非受管的依賴
sbt s Scala 版本
Forking
啟用 forking
變更工作目錄
Forked JVM 選項
Java Home
組態輸出
組態輸入
直接使用
全域設定
基本全域組態檔
使用全域外掛程式的全域設定
Java 原始碼
使用方式
混合模式編譯中的已知問題
忽略 Scala 原始碼目錄
對應檔案
相對於目錄
重新設定基底
展平
替代方案
本機 Scala
巨集專案
簡介
定義專案關係
通用介面
發佈
路徑
建構檔案
路徑搜尋器
選取子代
get
選取子節點
僅現有的檔案
名稱篩選器
結合路徑搜尋器
篩選
空的 PathFinder
PathFinder 至字串的轉換
對應
檔案篩選器
平行執行
任務排序
實際限制
背景
組態
標記任務
定義限制
內建標籤和規則
自訂標籤
未來工作
標記任務
分數權重
預設行為
調整預設值
其他特性
外部程序
使用方式
範例
執行專案程式碼
問題
System.exit
執行緒
還原序列化和類別載入
測試
基礎
testOnly
testQuick
Tab 鍵補全
其他任務
輸出
測試報告
選項
測試框架引數
設定和清除
停用測試的平行執行
篩選類別
Forking 測試
額外的測試組態
整合測試
自訂測試組態
具有共用原始碼的額外測試組態
應用於平行執行
JUnit
擴充功能
自訂測試框架
自訂測試報告器
使用擴充功能
處理中類別載入
疑難排解
Globs
建構 Globs
路徑名稱
篩選器
深度
正規表示式
使用 FileTreeView 查詢檔案系統
檔案屬性
篩選
串流
實作
Globs vs. PathFinder
遠端快取
使用方式
透過 Maven 儲存庫進行遠端快取
ThisBuild / rootPaths
remoteCacheId
依賴管理
Artifacts
選取預設 Artifacts
修改預設 Artifacts
定義自訂 Artifacts
發佈 .war 檔案
使用具有 Artifacts 的依賴
依賴管理流程
背景
快取和組態
關於 SNAPSHOTs 的注意事項
函式庫管理
簡介
手動依賴管理
自動依賴管理
內嵌宣告
依賴
解析器
覆寫預設解析器
覆寫所有組建的所有解析器
明確的 URL
停用傳遞性
分類器
排除傳遞依賴
下載原始碼
額外屬性
內嵌 Ivy XML
Ivy Home 目錄
檢查總和
衝突管理
逐出警告
覆寫版本
無法解析的依賴錯誤
快取的解析
發佈
組態
強制修訂 (不建議)
已知限制
Proxy 儲存庫
概觀
sbt 組態
~/.sbt/repositories
使用 Proxy 儲存庫的憑證
啟動器腳本
sbt.override.build.repos
sbt.repository.config
Proxying Ivy 儲存庫
發佈
略過發佈
定義儲存庫
在本機發佈
憑證
交叉發佈
覆寫發佈慣例
已發佈的 Artifacts
修改產生的 POM
版本配置
解析器
Maven 解析器
本機 Maven 解析器
預先定義的解析器
自訂解析器
基本範例
檔案系統
URL
SFTP 和 SSH 儲存庫
自訂版面配置
更新報告
篩選報告和取得 Artifacts
篩選基本概念
ConfigurationFilter
ModuleFilter
ArtifactFilter
DependencyFilter
快取的解析
設定
依賴作為圖形
快取的解析
注意事項和已知問題
首次執行
不保證 Ivy 的忠實度
SNAPSHOT 和動態依賴
動機
任務和命令
任務
簡介
功能
定義任務
Hello World 範例 (sbt)
定義金鑰
實作任務
定義基本任務
具有輸入的任務
任務範圍
關於優先順序
分離實作
修改現有任務
從多個範圍取得值
簡介
範例
ScopeFilter
未指定的篩選器
更多關於篩選器建構
結合 ScopeFilters
更多操作
遺失值
來自多個範圍的多個值
進階任務操作
串流:每個任務的記錄
條件式工作
使用 Def.taskDyn 進行動態計算
使用 Def.sequential
處理失敗
failure
result
andFinally
快取
Cache.cached
先前值
Tracked.lastOutput
Tracked.inputChanged
追蹤檔案屬性
FileInfo
Tracked.inputChanged
Tracked.outputChanged
Tracked.diffInputs
Tracked.diffOutputs
案例研究:sbt-scalafmt
摘要
輸入任務
輸入金鑰
基本輸入任務定義
使用剖析器的輸入任務
建構剖析器
建構任務
InputTask 類型
使用其他輸入任務
預先套用輸入
從 InputTask 取得任務
命令
什麼是命令?
簡介
定義命令
通用指令
無引數命令
單一引數命令
多引數命令
完整範例
剖析和 Tab 完成
基本剖析器
內建剖析器
結合剖析器
轉換結果
控制 Tab 完成
相依剖析器
狀態和動作
與命令相關的資料
與專案相關的資料
專案資料
類別路徑
執行任務
在任務中使用狀態
在任務中更新狀態
任務/設定:動機
應用
外掛程式和最佳實務
一般最佳實務
project/ vs. ~/.sbt/
本機設定
.sbtrc
產生的檔案
不要硬式編碼
不要變更檔案
使用絕對路徑
剖析器組合器
外掛程式
使用自動外掛程式
依描述
外掛程式依賴
全域外掛程式
建立自動外掛程式
projectSettings 和 buildSettings
實作外掛程式依賴
根外掛程式和觸發的外掛程式
使用 autoImport 控制匯入
外掛程式範例
使用範例
全域外掛程式範例
在組建定義中使用函式庫的範例
1a) 手動管理
1b) 自動管理:直接編輯方法
1c) 自動管理:命令列方法
1d) 專案依賴
2) 使用函式庫
發佈外掛程式
最佳實務
外掛程式最佳實務
金鑰命名慣例:使用前置詞
Artifact 命名慣例
(選用) 外掛程式命名慣例
不要使用預設套件
讓您的外掛程式廣為人知
重複使用現有的金鑰
使用設定和任務。避免命令。
以簡單的舊 Scala 物件提供核心功能
組態建議
您可能不需要自己的組態
何時定義自己的組態
與組態搭配使用
提供原始設定和已組態的設定
範圍建議
在 globalSettings 中提供預設值
針對設定使用主要任務範圍
在 globalSettings 中重新連線現有的金鑰
使用 sbt 設定 GitHub Actions
設定 project/build.properties
閱讀 GitHub Actions 手冊
基本設定
自訂 JVM 選項
快取
組建矩陣
範例 .github/workflows/ci.yml 設定
sbt-github-actions
使用 sbt 設定 Travis CI
設定 project/build.properties
閱讀 Travis 手冊
基本設定
外掛程式組建設定
自訂 JVM 選項
快取
組建矩陣
通知
處理不穩定的網路或測試
更多內容
範例設定
測試 sbt 外掛程式
腳本化測試框架
步驟 1:快照
步驟 2:SbtPlugin
步驟 3:src/sbt-test
步驟 4:撰寫腳本
步驟 5:執行腳本
步驟 6:自訂斷言
步驟 7:測試測試
步驟 8:獲得靈感
sbt new 和範本
嘗試新指令
Giter8 支援
Giter8 參數
如何建立 Giter8 範本
使用 CC0 1.0 授權範本
如何擴充 sbt new
範本解析器
templateResolverInfos
跨版本建置外掛程式
在建置中混合函式庫和 sbt 外掛程式
如何...
類別路徑
在類別路徑中包含新的受管理工件類型,例如 mar
取得用於編譯的類別路徑
取得執行階段類別路徑,包括專案已編譯的類別
取得測試類別路徑,包括專案已編譯的測試類別
在類別路徑上使用封裝的 JAR 檔,而不是類別目錄
取得設定的所有受管理 JAR 檔
取得包含在類別路徑中的檔案
取得產生類別路徑條目的模組和工件
自訂路徑
變更預設的 Scala 原始碼目錄
變更預設的 Java 原始碼目錄
變更預設的資源目錄
變更預設的(非受管理)函式庫目錄
停用將專案的基本目錄用作原始碼目錄
新增額外的原始碼目錄
新增額外的資源目錄
在原始碼目錄中包含/排除檔案
在資源目錄中包含/排除檔案
僅包含特定的(非受管理)函式庫
產生檔案
產生原始碼
產生資源
檢查建置
顯示或搜尋指令、任務或設定的說明
列出可用的任務
列出可用的設定
顯示設定/任務相依性的樹狀結構
顯示設定或任務的描述和類型
顯示設定或任務的委派鏈
顯示相關的設定或任務
顯示專案和建置的清單
顯示目前的階段作業(暫時)設定
顯示有關 sbt 和目前建置的基本資訊
顯示設定的值
顯示執行任務的結果
顯示用於編譯或測試的類別路徑
顯示在專案中偵測到的主要類別
顯示在專案中偵測到的測試類別
互動模式
使用 Tab 鍵完成
顯示更多 Tab 鍵完成建議
修改預設的 JLine 鍵盤繫結
設定提示字串
使用歷程記錄
變更互動式歷程記錄檔的位置
對所有專案使用相同的歷程記錄
停用互動式歷程記錄
在進入互動模式之前執行指令
設定和使用記錄
檢視先前執行之指令的記錄輸出
檢視特定任務的先前記錄輸出
顯示先前編譯中的警告
全域變更記錄層級
變更特定任務、設定或專案的記錄層級
設定堆疊追蹤的列印
立即列印測試的輸出,而不是緩衝
新增自訂記錄器
在任務中記錄訊息
在設定中記錄訊息
專案中繼資料
設定專案名稱
設定專案版本
設定專案組織
設定專案的首頁和其他中繼資料
設定封裝
在類別路徑上使用封裝的 JAR 檔,而不是類別目錄
新增資訊清單屬性
變更封裝的檔案名稱
修改封裝的內容
執行指令
在批次模式中將引數傳遞給指令或任務
提供多個要連續執行的指令
從檔案讀取指令
定義指令或任務的別名
快速評估 Scala 運算式
設定和使用 Scala
設定用於建置專案的 Scala 版本
停用自動相依於 Scala 函式庫
暫時切換到不同的 Scala 版本
使用本機 Scala 安裝來建置專案
針對多個 Scala 版本建置專案
在類別路徑上具有專案的相依性(但不包含已編譯的專案類別)的情況下,進入 Scala REPL
在類別路徑上具有專案的相依性和已編譯程式碼的情況下,進入 Scala REPL
在類別路徑上具有外掛程式和建置定義的情況下,進入 Scala REPL
定義進入 Scala REPL 時評估的初始指令
定義結束 Scala REPL 時評估的指令
從專案程式碼使用 Scala REPL
產生 API 文件
選取 javadoc 或 scaladoc
設定獨立於編譯產生 scaladoc 所用的選項
將 scaladoc 的選項新增至編譯選項
設定獨立於編譯產生 javadoc 所用的選項
將 javadoc 的選項新增至編譯選項
啟用自動連結至受管理相依性的外部 Scaladoc
啟用手動連結至受管理相依性的外部 Scaladoc
定義函式庫的 API 文件位置
定義自訂任務
定義在特定子專案中執行測試的任務
如何在啟動時執行動作
追蹤檔案輸入和輸出
檔案輸入
增量建置
檔案輸出
篩選器
清除輸出
檔案變更追蹤
持續建置檔案監視
部分管線評估/錯誤處理
疑難排解記憶體問題
排序
使用 Def.sequential 定義循序任務
project/build.properties
project/style.sbt
build.sbt
使用 Def.taskDyn 定義動態任務
project/build.properties
project/style.sbt
build.sbt v1
build.sbt v2
在輸入任務之後執行動作
src/main/scala/Greeting.scala
build.sbt v1
build.sbt v2
使用 Def.inputTaskDyn 定義動態輸入任務
build.sbt v1
build.sbt v2
如何使用指令進行排序
如何定義自訂相依性設定
有關自訂相依性設定的注意事項
基本自訂設定範例
project/FuzzPlugin.scala
build.sbt
沙箱設定範例
project/ScalafmtPlugin.scala
如何新增測試組態?
範例
.sbt 建置範例
具有 .scala 檔案的 .sbt 建置範例
project/Resolvers.scala
project/Dependencies.scala
project/ShellPromptPlugin.scala
build.sbt
進階設定範例
進階指令範例
索引
值和類型
依賴管理
設定和任務
建置結構
方法
設定和任務
檔案和 IO
依賴管理
剖析
開發人員指南(正在進行中)
邁向 sbt 1.0
概念
建置定義的原始碼相容性
外掛程式的二進位相容性
模組化
模組摘要
IO API ( sbt/io )
序列化 API ( sbt/serialization )
Util API ( sbt/util )
LibraryManagement API ( sbt/librarymanagement )
IncrementalCompiler API ( sbt/zinc )
建置 API (待定)
sbt 啟動器 ( sbt/launcher )
用戶端/伺服器 (待定)
網站 ( sbt/website )
sbt 編碼準則
一般目標
清除舊的棄用
力求零警告(棄用除外)
文件
模組化設計
目標小
公用 API 應根據介面進行編碼
隱藏實作詳細資料
減少相互依賴
隱藏外部類別
隱藏內部模組
編譯器旗標
套件名稱和組織名稱
二進位復原能力
MiMa
公用特質應僅包含 def 宣告
抽象類別也很有用
密封特質和抽象類別
完成葉類別
類型類別和子類別繼承
避免使用 case class,請使用 sbt-datatype
偏好方法多載,而非預設參數值
其他公用 API 問題
避免使用字串類型程式設計
避免過度使用 def apply
使用特定資料類型( Vector 、 List 或 Array ),而不是 Seq
避免在 Set 上呼叫 toSeq 或任何具有副作用的動作
避免在 Map 上呼叫 toSeq
如果需要 Java 互通性,請避免在簽章中使用函數和元組
樣式很重要
使用 scalafmt
避免使用程序語法
盡可能在其附屬物件中定義類型類別的執行個體
應匯入用於語法的隱含轉換(豐富我的函式庫模式)
sbt-datatype
使用外掛程式
資料類型結構描述
記錄
介面
列舉
使用資料類型來保留二進位相容性
JSON 編解碼器產生
用於通訊協定、記錄等的現有參數
設定
語法摘要
編譯器介面
提取最特定的來源
sbt 啟動器
sbt 啟動器入門
概觀
應用程式
伺服器
解析應用程式/伺服器
建立已啟動的應用程式
執行應用程式
執行
Sbt 啟動器架構
模組解析
類別載入器快取和隔離
快取
鎖定
服務探索和隔離
sbt 啟動器設定
範例
1. Scala 設定
2. 應用程式識別
3. 存放庫區段
4. 啟動區段
5. Ivy 區段
6. 伺服器區段
變數替換
語法
注意事項
核心原則
建置狀態簡介
設定架構
任務架構
設定核心
範例
設定
範例設定系統
範例用法
sbt 設定討論
範圍
建構設定
設定定義
設定初始化
使用 sbt 建立命令列應用程式
Hello World 範例
建置定義:build.sbt
應用程式:Main.scala
啟動器設定檔:hello.build.properties
已封存的頁面
Hello, World
sbt new 指令
執行應用程式
結束 sbt Shell
建置定義
深入探討內容
合併頁面
學習
下載
參與