以下は、モジュールレイヤーの概念図です。
この図は、各レイヤーがその下のレイヤーのみに依存するように配置されています。
IO APIは、ファイルとディレクトリを扱うための低レベルAPIです。
シリアライゼーションAPIは、Scala Picklingをベースにした、独自のラッパーです。シリアライゼーションAPIの役割は、値をJSONに変換することです。
ユーティリティAPIは、ロギングやsbtで使用される内部データ型など、一般的に使用される機能を提供します。
sbtのライブラリ管理システムはApache Ivyに基づいており、ライブラリ管理システムに関する概念や用語もIvyの影響を受けています。ライブラリ管理APIの役割は、推移的な依存関係グラフを計算し、指定されたリポジトリからアーティファクトをダウンロードすることです。
Scalaのインクリメンタルコンパイルは非常に基本的なため、sbtの機能として意識することはほとんどありません。実際には多くのサブプロジェクト/クラスが内部詳細に関与しており、この機会にそれらを隠す必要があります。
これは、build.sbt
に公開されている部分です。このモジュールの役割は、ビルドファイルとプラグインを読み込み、コマンドが状態に対して実行される方法を提供することです。
これはsbt/sbtに残る可能性があります。
sbtランチャーは、Ivy依存関係マネージャーを使用して解決されたプログラムを読み込み、実行できる汎用コンテナを提供します。sbtはこれをデプロイメントメカニズムとして使用しますが、他の目的にも使用できます。
foundweekends/conscriptとランチャーの詳細を参照してください。
現在sbt/sbt-remote-controlで開発されています。sbtサーバーは、コマンドラインエクスペリエンスの機能をラップするJSONベースのAPIを提供します。
クライアントの1つは「ターミナルクライアント」であり、コマンドラインsbtシェルを包含します。計画されている他のクライアントには、IDE統合があります。
このウェブサイトのソースコード。