1. モジュール概要

モジュール概要 

以下は、モジュールレイヤーの概念図です。

Module diagram

この図は、各レイヤーがその下のレイヤーのみに依存するように配置されています。

IO API (sbt/io) 

IO APIは、ファイルとディレクトリを扱うための低レベルAPIです。

シリアライゼーションAPI (sbt/serialization) 

シリアライゼーションAPIは、Scala Picklingをベースにした、独自のラッパーです。シリアライゼーションAPIの役割は、値をJSONに変換することです。

ユーティリティAPI (sbt/util) 

ユーティリティAPIは、ロギングやsbtで使用される内部データ型など、一般的に使用される機能を提供します。

ライブラリ管理API (sbt/librarymanagement) 

sbtのライブラリ管理システムはApache Ivyに基づいており、ライブラリ管理システムに関する概念や用語もIvyの影響を受けています。ライブラリ管理APIの役割は、推移的な依存関係グラフを計算し、指定されたリポジトリからアーティファクトをダウンロードすることです。

インクリメンタルコンパイラAPI (sbt/zinc) 

Scalaのインクリメンタルコンパイルは非常に基本的なため、sbtの機能として意識することはほとんどありません。実際には多くのサブプロジェクト/クラスが内部詳細に関与しており、この機会にそれらを隠す必要があります。

ビルドAPI (tbd) 

これは、build.sbtに公開されている部分です。このモジュールの役割は、ビルドファイルとプラグインを読み込み、コマンドが状態に対して実行される方法を提供することです。

これはsbt/sbtに残る可能性があります。

sbtランチャー (sbt/launcher) 

sbtランチャーは、Ivy依存関係マネージャーを使用して解決されたプログラムを読み込み、実行できる汎用コンテナを提供します。sbtはこれをデプロイメントメカニズムとして使用しますが、他の目的にも使用できます。

foundweekends/conscriptランチャーの詳細を参照してください。

クライアント/サーバー (tbd) 

現在sbt/sbt-remote-controlで開発されています。sbtサーバーは、コマンドラインエクスペリエンスの機能をラップするJSONベースのAPIを提供します。

クライアントの1つは「ターミナルクライアント」であり、コマンドラインsbtシェルを包含します。計画されている他のクライアントには、IDE統合があります。

ウェブサイト (sbt/website) 

このウェブサイトのソースコード。