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 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コマンドの詳細については、設定の検査ページを参照してください。

設定またはタスクの説明と型の表示 

helpsettings、および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を参照してください。

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は、runメソッドで使用し、runMainメソッドをタブ補完するために、publicでstaticなmainメソッドを持つクラスを検出します。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)