1. 检查构建

检查构建 

显示或搜索命令、任务或设置的帮助 

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 helphelp taskshelp 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 命令的详细信息,请参见 检查设置 页面。

显示设置或任务的描述和类型 

虽然 helpsettingstasks 命令显示任务的描述,但 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

显示有关 sbt 和当前构建的基本信息 

> 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)