本頁是您可以在 sbt 互動式提示或批次模式中使用的命令列選項、命令和任務的相對完整清單。請參閱「入門指南」中的 執行 以了解基本概念的簡介,而本頁則有更多詳細資訊。
toString
表示可以使用 show <task>
來顯示,以執行任務,而不僅僅是 <task>
。clean
刪除所有產生的檔案(target
目錄)。publishLocal
將成品(例如 jar)發佈到本機 Ivy 儲存庫,如「發佈」中所述。publish
將成品(例如 jar)發佈到由 publishTo 設定定義的儲存庫,如「發佈」中所述。update
解析並擷取外部相依性,如 程式庫相依性 中所述。組態層級任務是與組態相關聯的任務。例如,compile
(相當於 Compile/compile
)會編譯主要原始碼(compile
組態)。Test/compile
會編譯測試原始碼(測試 test
組態)。compile
組態的大多數任務在 test
組態中都有對應的任務,可以使用 Test/
前置詞來執行。
compile
編譯主要原始碼(在 src/main/scala
目錄中)。Test/compile
編譯測試原始碼(在 src/test/scala/ 目錄中)。console
啟動 Scala 直譯器,其中類別路徑包含已編譯的原始碼、lib 目錄中的所有 jar 和受管理的程式庫。若要返回 sbt,請輸入 :quit、Ctrl+D (Unix) 或 Ctrl+Z (Windows)。同樣地,Test/console 會使用測試類別和類別路徑啟動直譯器。consoleQuick
啟動 Scala 直譯器,其中類別路徑包含專案的編譯時相依性。Test/consoleQuick 使用測試相依性。此任務與 console 的不同之處在於,它不會強制編譯目前專案的原始碼。consoleProject
使用類別路徑上的 sbt 和建置定義進入互動式工作階段。建置定義和相關值會繫結至變數,並匯入通用套件和值。如需更多資訊,請參閱 consoleProject 文件。doc
使用 scaladoc 為 src/main/scala
中的 Scala 原始碼檔案產生 API 文件。Test/doc
為 src/test/scala
中的原始碼檔案產生 API 文件。package
建立包含 src/main/resources
中的檔案和從 src/main/scala
編譯的類別的 jar 檔案。Test/package
建立包含 src/test/resources
中的檔案和從 src/test/scala
編譯的類別的 jar 檔案。packageDoc
建立包含從 src/main/scala 中的 Scala 原始碼檔案產生的 API 文件的 jar 檔案。Test/packageDoc 建立包含 src/test/scala 中測試原始碼檔案的 API 文件的 jar 檔案。packageSrc
:建立包含所有主要原始碼檔案和資源的 jar 檔案。封裝路徑相對於 src/main/scala 和 src/main/resources。同樣地,Test/packageSrc 會對測試原始碼檔案和資源執行操作。run <argument>*
在與 sbt 相同的虛擬機器中執行專案的主要類別。主要類別會傳遞提供的引數。請參閱 執行專案程式碼,以了解在此動作執行的程式碼中使用 System.exit 和多執行緒(包括 GUI)的詳細資訊。Test/run
會在測試程式碼中執行主要類別。runMain <main-class> <argument>*
在與 sbt 相同的虛擬機器中執行專案的指定主要類別。主要類別會傳遞提供的引數。請參閱 執行專案程式碼,以了解在此動作執行的程式碼中使用 System.exit 和多執行緒(包括 GUI)的詳細資訊。Test/runMain
會在測試程式碼中執行指定的 主要類別。test
執行在測試編譯期間偵測到的所有測試。請參閱 測試,以了解詳細資訊。testOnly <test>*
執行以引數形式提供的測試。*
(將會)解譯為測試名稱中的萬用字元。請參閱 測試,以了解詳細資訊。testQuick <test>*
執行以引數形式指定的測試(如果未提供引數,則執行所有測試),這些測試
*
(將會)解譯為測試名稱中的萬用字元。如需詳細資訊,請參閱 [Testing][Testing]。exit
或 quit
結束目前的互動式工作階段或建置。此外,Ctrl+D (Unix) 或 Ctrl+Z (Windows) 將會結束互動式提示符號。help <command>
顯示指定命令的詳細說明。如果命令不存在,help 會列出名稱或描述與引數相符的命令的詳細說明,並將其解譯為正規表示式。如果未提供任何命令,則會顯示主要命令的簡短說明。相關命令是任務和設定。projects [add|remove <URI>]
如果未提供任何引數,則列出所有可用的專案,或在提供的 URI 中新增/移除建置。(請參閱 多專案建置,以了解多專案建置的詳細資訊。)project <project-id>
將目前的專案變更為具有 ID <project-id>
的專案。後續操作將在指定專案的內容中完成。(請參閱 多專案建置,以了解多專案建置的詳細資訊。)~ <command>
每當原始碼檔案變更時,執行專案指定的動作或方法。請參閱 觸發執行,以了解詳細資訊。< filename
執行給定檔案中的命令。每個命令都應該在其自己的行上。會忽略空行和以「#」開頭的行+ <command>
針對 crossScalaVersions 設定中定義的所有 Scala 版本,執行專案指定的動作或方法。++ <version|home-directory> <command>
暫時變更建置專案的 Scala 版本,並執行提供的命令。<command>
是可選的。指定的 Scala 版本將會一直使用到重新載入專案、修改設定(例如透過 set 或 session 命令)或再次執行 ++ 為止。<version>
不需要列在建置定義中,但它必須在儲存庫中可用。或者,指定 Scala 安裝的路徑。; A ; B
執行 A,如果成功,則執行 B。請注意,需要開頭的分號。eval <Scala-expression>
評估給定的 Scala 運算式,並傳回結果和推斷類型。這可用於設定系統屬性、作為計算機、分支處理等等。例如
> eval System.setProperty("demo", "true")
> eval 1+1
> eval "ls -l" !
reload [plugins|return]
若未指定任何參數,則重新載入建置,並在必要時重新編譯任何建置或外掛程式定義。reload plugins
會將目前專案變更為建置定義專案(位於 project/
中)。這對於直接操作建置定義很有用。例如,在建置定義專案上執行 clean 會強制更新快照並重新編譯建置定義。reload return
則會變更回主專案。set <設定表達式>
評估並套用指定的設定定義。該設定會一直生效,直到 sbt 重新啟動、重新載入建置,或該設定被另一個 set 指令覆寫,或被 session 指令移除為止。詳情請參閱.sbt 建置定義和檢視設定。session <指令>
管理由 set
指令定義的工作階段設定。它可以持久化在提示字元中設定的設定。詳情請參閱檢視設定。inspect <設定鍵>
顯示有關設定的資訊,例如值、描述、定義範圍、依賴關係、委派鏈和相關設定。詳情請參閱檢視設定。從作業系統 Shell 啟動 sbt
執行器時,可以指定各種系統屬性或 JVM 額外選項來影響其行為。
如果在 sbt
啟動時定義了 JAVA_OPTS
和/或 SBT_OPTS
環境變數,則它們的內容會作為命令列引數傳遞給執行 sbt 的 JVM。
如果目前目錄中存在名為 .jvmopts
的檔案,則其內容會在 sbt 啟動時附加到 JAVA_OPTS
。同樣地,如果存在 .sbtopts
和/或 /etc/sbt/sbtopts
,則它們的內容會附加到 SBT_OPTS
。JAVA_OPTS
的預設值為 -Dfile.encoding=UTF8
。
您也可以直接將 JVM 系統屬性和命令列選項指定為 sbt
引數:任何 -Dkey=val
引數都將原封不動地傳遞給 JVM,而任何 -J-Xfoo
都將作為 -Xfoo
傳遞。
有關更多詳細資訊,請參閱 sbt --help
。
如果您發現自己用完了永久代空間,或者您的工作站記憶體不足,請像調整任何 Java 應用程式一樣調整 JVM 設定。
例如,一組常見的記憶體相關選項為
export SBT_OPTS="-Xmx2048M -Xss2M"
sbt
或者,如果您只想為此工作階段指定它們
sbt -J-Xmx2048M -J-Xss2M
sbt
只是一個引導程式,sbt 的實際核心、Scala 編譯器和標準函式庫預設會下載到共享目錄 $HOME/.sbt/boot/
。
若要變更此目錄的位置,請設定 sbt.boot.directory
系統屬性。相對路徑會針對目前的工作目錄解析,如果您想避免在專案之間共享啟動目錄,這會很有用。例如,以下範例使用 0.11 之前的樣式,將啟動目錄放在 project/boot/
中
sbt -Dsbt.boot.directory=project/boot/
您的終端機使用的字元編碼可能與 Java 平台預設編碼不同。在這種情況下,您需要指定 file.encoding=<編碼>
系統屬性,它可能看起來像這樣
export JAVA_OPTS="-Dfile.encoding=Cp1252"
sbt
在 Unix 上,sbt 將從標準的 http_proxy
、https_proxy
和 ftp_proxy
環境變數中取得任何 HTTP、HTTPS 或 FTP 代理設定。如果您位於需要驗證的代理伺服器後方,則需要在 sbt 啟動時傳遞一些補充旗標。有關更多詳細資訊,請參閱JVM 網路系統屬性。
例如
sbt -Dhttp.proxyUser=username -Dhttp.proxyPassword=mypassword
在 Windows 上,您的指令碼應設定代理主機、連接埠,以及如果適用的話,使用者名稱和密碼的屬性。例如,對於 HTTP
sbt -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=mypassword
在上述命令列中將 http
替換為 https
或 ftp
,以設定 HTTPS 或 FTP。
以下系統屬性也可以傳遞給 sbt
屬性 | 值 | 預設值 | 含義 |
---|---|---|---|
sbt.banner | 布林值 | true(在 1.3+ 中) | 顯示歡迎橫幅,宣傳新功能。 |
sbt.boot.directory | 目錄 | ~/.sbt/boot | 共享啟動目錄的路徑。如果您在 CI 環境中使用 sbt,並且想要在執行之間快取 sbt 啟動類別,則應明確定義sbt.boot.directory。 |
sbt.boot.properties | 檔案 | 大致上sbt.boot.properties是 sbt 啟動器的內部,並且特定於 sbt 版本。 | 尋找 sbt 啟動屬性檔案的路徑。這可以是相對路徑(相對於 sbt 基本目錄、使用者主目錄或 sbt jar 檔案的位置),也可以是絕對路徑或絕對檔案 URI。 |
sbt.ci | 布林值 | false(除非 env 變數BUILD_NUMBER已設定) | 適用於持續整合環境。抑制超殼和色彩。 |
sbt.client | 布林值 | false | |
sbt.color | 字串 | auto | 取代sbt.log.format。若要開啟色彩,請使用always或true。若要關閉色彩,請使用never或false>。如果輸出是支援色彩的終端機(而不是管道),則使用色彩,請使用auto. |
sbt.coursier | 布林值 | true(在 1.3+ 中) | 使用 coursier 擷取套件。(另請參閱sbt.ivy.) |
sbt.coursier.home | 目錄 | CoursierDependencyResolution.defaultCacheLocation(在 1.3+ 中) | coursier 成品快取的位置,預設值由Coursier 快取解析邏輯定義。您可以使用命令 `csrCacheDirectory` 驗證該值。如果您在 CI 環境中使用 coursier,並且想要在執行之間快取成品,則應明確定義sbt.coursier.home。 |
sbt.extraClasspath | 類別路徑項目 | (加入到 sbt 類別路徑的 jar 檔案或目錄)。請注意,項目以逗號分隔,例如entry1, entry2,..。另請參閱sbt 啟動器文件中的resource。 | |
sbt.genbuildprops | 布林值 | true | 如果遺失,則產生build.properties。如果未設定,則會延遲至sbt.skip.version.write. |
sbt.global.base | 目錄 | $HOME/.sbt/1.0 | 包含全域設定和外掛程式的目錄。 |
xsbt.inc.debug | 布林值 | false | 增量偵錯器的額外偵錯。 |
sbt.ivy | 布林值 | true(在 <1.3 中) | 使用 ivy 擷取套件。 |
sbt.ivy.home | 目錄 | ~/.ivy2 | 包含本機 Ivy 儲存庫和成品快取的目錄。如果您在 CI 環境中使用 sbt,並且想要在執行之間快取 ivy 成品,則應明確定義sbt.ivy.home。 |
sbt.log.noformat | 布林值 | false | 如果為 true,則停用 ANSI 色碼。在不支援色彩的建置伺服器或終端機上很有用。 |
sbt.main.class | 字串 | sbt.xMain | 要使用的 sbt 類別(替代方案包括sbt.ConsoleMain和sbt.ScriptMain). |
sbt.offline | 布林值 | false | 避免從儲存庫擷取類別。 |
sbt.override.build.repos | 布林值 | false | 如果為 true,則會忽略在建置定義中設定的儲存庫,並改為使用為啟動器設定的儲存庫。請參閱sbt.repository.config和sbt 啟動器文件。 |
sbt.progress | 字串 | ? | 使用always來顯示進度(「超殼」)。 |
sbt.repository.config | 檔案 | ~/.sbt/repositories | 包含用於啟動器的儲存庫的檔案。格式與 sbt 啟動器設定檔案的[repositories]區段相同。此設定通常與設定sbt.override.build.repos一起使用true(請參閱sbt.override.build.repos和sbt 啟動器文件)。 |
sbt.resident.limit | 數字 | 0 | 要保留的 Scala 編譯器數量。此實驗性功能旨在縮短編譯時間。它似乎沒有成功,並且可能會移除此旗標。 |
sbt.skip.version.write | 布林值 | false | 如果遺失,則產生build.properties如果遺失。請參閱sbt.genbuildprops. |
sbt.supershell | 布林值 | true如果啟用色彩 | 使用超殼(在 Shell 底部顯示進度)。 |
sbt.supershell.sleep | 數字 | 100 | 更新超殼進度區域之間要等待的時間。 |
sbt.task.timings | 布林值 | false | 測量執行工作所經過的時間。 |
sbt.task.timings.omit.paths | 布林值 | false | 報告計時時省略路徑。 |
sbt.task.timings.on.shutdown | 布林值 | false | 在 JVM 關閉時報告計時(而不是在工作完成時)。 |
sbt.task.timings.threshold | 字串 | 0 | 如果計時報告中的項目低於此臨界值,則省略它們。 |
sbt.traces | 布林值 | false | 為工作產生 Chrome Trace Event Format 記錄。 |
sbt.turbo | 布林值 | false | 使用額外的分層類別載入器。 |
sbt.version | 版本 | 1.9.8 | 要使用的 sbt 版本,通常取自project/build.properties. |
sbt.watch.mode | 字串 | auto | 如果polling,則定期檢查檔案系統是否有更新。 |