help
命令用於顯示可用的命令並搜尋命令、任務或設定的說明。如果沒有參數執行,help
會列出可用的命令。
> help
help Displays this help message or prints detailed help on
requested commands (run 'help <command>').
about Displays basic information about sbt and the build.
reload (Re)loads the project in the current directory
...
> help compile
如果傳遞給 help
的參數是現有命令、設定或任務的名稱,則會顯示該實體的說明。否則,該參數會被解釋為用於搜尋所有命令、設定和任務的說明的正規表示式。
tasks
命令類似於 help
,但僅適用於任務。同樣地,settings
命令僅適用於設定。
另請參閱 help help
、help tasks
和 help settings
。
不帶參數的 tasks
命令會列出最常用的任務。它可以採用正規表示式來搜尋任務名稱和描述。可以增加詳細程度以顯示或搜尋較不常用的任務。詳細資訊請參閱 help tasks
。
不帶參數的 settings
命令會列出最常用的設定。它可以採用正規表示式來搜尋設定名稱和描述。可以增加詳細程度以顯示或搜尋較不常用的設定。詳細資訊請參閱 help settings
。
inspect
命令會顯示有關給定設定或任務的多個資訊片段,包括任務/設定的依賴關係以及依賴於它的任務/設定。例如,
> inspect Test/compile
...
[info] Dependencies:
[info] Test / manipulateBytecode
[info] Test / enableBinaryCompileAnalysis
[info] Test / compileIncSetup
[info] Reverse dependencies:
[info] Test / products
[info] Test / discoveredMainClasses
[info] Test / printWarnings
[info] Test / definedTestNames
[info] Test / definedTests
...
詳細資訊請參閱檢視設定頁面。
除了顯示上一節中描述的立即向前和反向依賴關係之外,inspect
命令還可以顯示任務或設定的完整依賴關係樹狀結構。例如,
> inspect tree clean
[info] clean = Task[Unit]
[info] +-clean / streams = Task[sbt.std.TaskStreams[sbt.internal.util.Init$ScopedKey[_ <: Any]]]
[info] | +-Global / streamsManager = Task[sbt.std.Streams[sbt.internal.util.Init$ScopedKey[_ <: Any]]]
[info] |
[info] +-cleanFiles = Task[scala.collection.Seq[java.io.File]]
[info] | +-cleanKeepFiles = Vector(<project>/target/.history)
[info] | | +-history = Some(<project>/target/.history)
[info] | | +-target = target
[info] | | +-baseDirectory =
...
對於每個任務,inspect tree
都會顯示任務產生之值的類型。對於設定,會顯示設定的 toString
。有關 inspect
命令的詳細資訊,請參閱檢視設定頁面。
雖然 help
、settings
和 tasks
命令會顯示任務的描述,但 inspect
命令也會顯示設定或任務的類型和設定的值。例如
> inspect update
[info] Task: sbt.librarymanagement.UpdateReport
[info] Description:
[info] Resolves and optionally retrieves dependencies, producing a report.
...
> inspect scalaVersion
[info] Setting: java.lang.String = 2.12.6
[info] Description:
[info] The version of Scala used for building.
...
詳細資訊請參閱檢視設定頁面。
詳細資訊請參閱檢視設定頁面。
inspect
命令可以幫助找到定義設定或任務的作用域。以下範例顯示,可以為測試和 API 文件產生指定不同的 Scala 選項。
> inspect scalacOptions
...
[info] Related:
[info] Compile / scalacOptions
[info] Global / scalacOptions
[info] Test / scalacOptions
詳細資訊請參閱檢視設定頁面。
projects
命令會顯示目前載入的專案。這些專案會依其封閉的建置分組,目前的專案會以星號標示。例如,
> projects
[info] In file:/home/user/demo/
[info] * parent
[info] sub
[info] In file:/home/user/dep/
[info] sample
session list
會顯示已在目前專案的命令列中新增的設定。例如,
> session list
1. maxErrors := 5
2. scalacOptions += "-explaintypes"
session list-all
會顯示為所有專案新增的設定。詳細資訊請參閱 help session
。
> about
[info] This is sbt 1.1.5
[info] The current project is {file:~/code/sbt.github.com/}default
[info] The current project is built against Scala 2.12.6
[info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin, sbt.plugins.Giter8TemplatePlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.12.6
inspect
命令會在輸出中顯示設定的值,但 show
命令專門用於此工作。它會顯示以參數形式提供的設定輸出。例如,
> show organization
[info] com.github.sbt
show
命令也適用於任務,如下所述。
> show update
... <output of update> ...
[info] Update report:
[info] Resolve time: 122 ms, Download time: 5 ms, Download size: 0 bytes
[info] compile:
[info] org.scala-lang:scala-library:
[info] - 2.12.6
[info] ...
show
命令將會執行以參數形式提供的任務,然後列印結果。請注意,這與 inspect
命令(在其他章節中描述)的行為不同,inspect
命令不會執行任務,因此只能顯示其類型,而不能顯示其產生的值。
> show compile:dependencyClasspath
...
[info] ArrayBuffer(Attributed(/Users/foo/.sbt/boot/scala-2.12.6/lib/scala-library.jar))
對於測試類別路徑,
> show Test/dependencyClasspath
...
[info] List(Attributed(/Users/foo/code/sbt.github.com/target/scala-2.12/classes), Attributed(~/.sbt/boot/scala-2.12.6/lib/scala-library.jar), Attributed(/Users/foo/.ivy2/cache/junit/junit/jars/junit-4.8.2.jar))
...
sbt 會偵測具有 public、static main 方法的類別,以供 run
方法使用並進行 runMain
方法的 Tab 完成。discoveredMainClasses
任務會執行此偵測,並將類別名稱清單作為其結果提供。例如,以下顯示在主要原始碼中偵測到的主要類別
> show compile:discoveredMainClasses
... <runs compile if out of date> ...
[info] List(org.example.Main)
sbt 會根據測試框架提供的指紋偵測測試。definedTestNames
任務會將以此方式偵測到的測試名稱清單作為其結果提供。例如,
> show Test/definedTestNames
... < runs test:compile if out of date > ...
[info] List(org.example.TestA, org.example.TestB)