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
命令可以帮助查找定义设置或任务的范围。以下示例显示,可以为 Scala 指定不同的选项以进行测试和 API 文档生成。
> 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
命令的行为不同(在其他部分中描述),后者不会执行任务,因此只能显示其类型,而不能显示其生成的值。
> 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 检测具有公共静态 main 方法的类,供 run
方法使用,并用于制表符补全 runMain
方法。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)