目次
sbtリファレンスマニュアル
インストール
はじめに
sbtの機能
その他
sbt入門
sbtのインストール
ヒントと注意事項
macOSへのsbtのインストール
cs setupを使用したsbtのインストール
JDKのインストール
SDKMAN!
ユニバーサルパッケージからのインストール
サードパーティパッケージからのインストール
Homebrew
Windowsへのsbtのインストール
cs setupを使用したsbtのインストール
JDKのインストール
ユニバーサルパッケージからのインストール
Windowsインストーラ
サードパーティパッケージからのインストール
Scoop
Chocolatey
Linuxへのsbtのインストール
cs setupを使用したsbtのインストール
SDKMANからのインストール
JDKのインストール
ユニバーサルパッケージからのインストール
Ubuntuおよびその他のDebian系ディストリビューション
Red Hat Enterprise Linuxおよびその他のRPM系ディストリビューション
Gentoo
sbtによる実践例
最小限のsbtビルドの作成
sbtシェルの起動
sbtシェルの終了
プロジェクトのコンパイル
コード変更時の再コンパイル
ソースファイルの作成
以前のコマンドの実行
ヘルプの取得
アプリケーションの実行
sbtシェルからThisBuild / scalaVersionの設定
セッションをbuild.sbtに保存
プロジェクトの命名
ビルドのリロード
libraryDependenciesにtoolkit-testを追加
テストの実行
増分テストの継続的実行
テストの記述
テストの成功
ライブラリ依存関係の追加
Scala REPLの使用
サブプロジェクトの作成
すべてのサブプロジェクトのリスト表示
サブプロジェクトのコンパイル
サブプロジェクトにtoolkit-testを追加
ブロードキャストコマンド
helloをhelloCoreに依存させる
uJsonを使用したJSONのパース
sbt-native-packagerプラグインの追加
リロードして.zip配布物を作成
アプリケーションのDocker化
バージョンの設定
scalaVersionの一時的な切り替え
distタスクの検査
バッチモード
sbt newコマンド
クレジット
ディレクトリ構造
ベースディレクトリ
ソースコード
sbtビルド定義ファイル
ビルドサポートファイル
ビルド成果物
バージョン管理の設定
実行
sbtシェル
バッチモード
継続的ビルドとテスト
一般的なコマンド
タブ補完
sbtシェル履歴
IDE統合
Metalsビルドサーバとしてsbtを使用
VS Codeでの対話型デバッグ
sbtセッションへのログ記録
IntelliJ IDEAへのインポート
IntelliJ IDEAでの対話型デバッグ
IntelliJ IDEAビルドサーバとしてsbtを使用(上級)
sbtセッションへのログ記録
MetalsフロントエンドとしてNeovimを使用(上級)
定義へ移動
ホバー
診断のリスト表示
Neovimでの対話型デバッグ
sbtセッションへのログ記録
ビルド定義
sbtバージョンの指定
ビルド定義とは何か?
build.sbtによる設定の定義方法
キー
型
組み込みキー
カスタムキー
タスクキーと設定キー
利用可能なすべての設定キーとタスクキーのリスト表示
タスクと設定の定義
タスクと設定の型
sbtシェル内のキー
build.sbtでのインポート
プレーンな.sbtビルド定義
ライブラリ依存関係の追加
マルチプロジェクトビルド
複数のサブプロジェクト
ビルド全体のスコープの設定
共通設定
依存関係
集約
クラスパス依存関係
構成ごとのクラスパス依存関係
プロジェクト間の依存関係
デフォルトのルートプロジェクト
対話型でのプロジェクトの移動
共通コード
付録:サブプロジェクトビルド定義ファイル
タスクグラフ
用語集
他のタスクへの依存関係の宣言
.value呼び出しのインライン化
タスクの検査
他の設定に依存するタスクの定義
他の設定に依存する設定の定義
build.sbt DSLの目的は何ですか?
Make入門
Rake
ハイブリッドフローベースプログラミングの利点
まとめ
スコープ
キーに関する全容
スコープ軸
サブプロジェクト軸によるスコープ指定
構成軸によるスコープ指定
タスク軸によるスコープ指定
ゼロスコープコンポーネント
ビルド定義におけるスコープの参照
sbtシェルからのスコープ付きキーの参照
sbtシェルでのスコープ付きキー表記の例
スコープの検査
スコープを指定するタイミング
ビルドレベルの設定
スコープの委譲
値の追加
以前の値への追加:+=と++=
設定が未定義の場合
他のキーの値に基づくタスク
依存関係による追加:+=と++=
スコープ委譲(.valueルックアップ)
スコープ委譲ルール
ルール1:スコープ軸の優先順位
ルール2:タスク軸の委譲
ルール3:構成軸の検索パス
ルール4:サブプロジェクト軸の検索パス
スコープ軸の優先順位、再考
inspectコマンドは委譲者をリスト表示する
.valueルックアップと動的ディスパッチ
ライブラリ依存関係
非管理依存関係
管理依存関係
libraryDependenciesキー
%%を使用した適切なScalaバージョンの取得
Ivyリビジョン
リゾルバ
デフォルトリゾルバの上書き
構成ごとの依存関係
プラグインの使用
プラグインとは何か?
プラグインの宣言
自動プラグインの有効化と無効化
グローバルプラグイン
利用可能なプラグイン
カスタム設定とタスク
キーの定義
タスクの実装
タスクの実行セマンティクス
タスク依存関係の重複排除
クリーンアップタスク
プレーンなScalaの使用
プラグインへの変換
ビルドの構成
sbtは再帰的である
一箇所の依存関係の追跡
.scalaファイルを使用するタイミング
自動プラグインの定義
はじめにのまとめ
sbt:コアコンセプト
高度なノート
よくある質問
プロジェクト情報
sbtという名前は何の略で、なぜSBTと書かないのですか?
どのようにしてヘルプを取得できますか?
バグをどのように報告できますか?
どのようにして手伝えますか?
使用方法
最後のコマンドは機能しませんでしたが、説明が見当たりません。なぜですか?
出力でANSIコードを無効にするにはどうすればよいですか?
sbtプロジェクト設定(依存関係など)を使用してScalaインタプリタ(REPL)を起動するにはどうすればよいですか?
ビルド定義
:=、+=、++=メソッドとは何ですか?
%メソッドとは何ですか?
ThisBuild / scalaVersionとは何ですか?
ModuleID、Project、?とは何ですか?
jarパッケージにファイルを追加するにはどうすればよいですか?
ソースコードまたはリソースを生成するにはどうすればよいですか?
入力ファイルに変更がない場合にタスクが作業のやり直しを回避するにはどうすればよいですか?
sbtの拡張
新しい依存関係構成を追加するにはどうすればよいですか?
テスト構成を追加するにはどうすればよいですか?
run以外にもカスタムruntaskを作成するにはどうすればよいですか?
proguardなどの外部ツールへの依存関係をどのように表現すればよいですか?
sbtのクラスパスを動的に変更するにはどうすればよいですか?
動的なクラスパス拡張の例
プロジェクトのロード時またはアンロード時にアクションを実行するにはどうすればよいですか?
プロジェクトのロード/アンロードフックの例
エラー
プロジェクトロード時、初期化されていない設定への参照
依存関係管理
チェックサムエラーを解決するにはどうすればよいですか?
プラグインを追加したところ、クロスコンパイルが失敗するようになりました!
その他
1.9.8のプラグインはどこにありますか?
一般情報
クレジット
コミュニティプラグイン
sbt組織
コミュニティIvyリポジトリ
sbt 0.13からのクロスビルドプラグイン
sbt 1.0(RC-xを含む)で使用可能なプラグイン
コードフォーマッタプラグイン
ドキュメントプラグイン
ワンジャープラグイン
リリースプラグイン
デプロイ統合プラグイン
ユーティリティとシステムプラグイン
IDE統合プラグイン
テストプラグイン
ライブラリ依存関係プラグイン
Webおよびフロントエンド開発プラグイン
データベースプラグイン
フレームワーク固有のプラグイン
コードジェネレータプラグイン
静的コード解析プラグイン
コードカバレッジプラグイン
新規プロジェクトプラグインの作成
社内プラグイン
検証プラグイン
言語サポートプラグイン
コミュニティリポジトリポリシー
プラグイン用のBintray
Sonatypeの使用
Sonatype設定
sbt設定
ステップ1:PGP署名
ステップ2:sbt-pgp
ステップ3:資格情報
ステップ4:build.sbtの設定
ステップ5:公開
任意のステップ
sbt-sonatype
公開のヒント
リリースプロセスとの統合
sbtへの貢献
ドキュメント
変更点
sbt 0.13.xからの移行
case class .copy(...)の移行
SbtPlugin
sbtバージョン固有のソースディレクトリ
スラッシュ構文への移行
sbt 0.12スタイルからの移行
sbt 0.12スタイルの演算子の移行
タプルエンリッチメントからの移行
.dependsOn、.triggeredBy、または.runBeforeを使用する場合の移行
Taskを設定する必要がある場合の移行
InputKeyを使用した移行
Buildトレイトからの移行
Resolver.withDefaultResolversからの移行
sbt 1.4.xリリース
sbt 1.4.1
sbt 1.4.0
ビルドサーバプロトコル(BSP)サポート
BSPを使用したIntelliJへのインポート方法
VS Code + Metalsへのインポート方法
ネイティブシンクライアント
ThisBuild / versionScheme
VirtualFile + RemoteCache
ビルドリンティング
条件付きタスク
増分ビルドパイプライン化
sbt-dependency-graphがインソース化された
互換性に影響を与える修正
その他の更新
参加
sbt 1.3.xリリース
sbt 1.3.0
互換性に影響を与える変更
Coursierを使用したライブラリ管理
クラスローダレイヤリングによるターボモード
IOの改善
Glob
監視の改善
ビルド定義ソース監視
カスタム増分タスク
スーパーシェル
トレース
SemanticDBサポート
printコマンド
Function1の追加
JDK 11サポート
その他のバグ修正と改善
参加
sbt 1.2.xリリース
sbt 1.2.1
前方バイナリ互換性の破壊
プロジェクトFooは不明な構成barを参照しています
その他のバグ修正
貢献者
sbt 1.2.0
プラグイン開発用のSbtPlugin
クロスJDKフォーキング
scalaVersionでフィルタリングされた集約
複合プロジェクト
プロジェクトマトリックス
セマンティックバージョンセレクタAPI
addPluginSbtFileコマンド
拡張可能なsbtサーバ
シンクライアント(複数)
互換性に影響を与える変更
その他のバグ修正と改善
内部
貢献者
sbt 1.1.xリリース
sbt 1.1.6
バグ修正
貢献者
sbt 1.1.5
バグ修正
改善点
ウォッチャの改善
VS Code拡張機能の更新
sbtによる実践例
貢献者
sbt 1.1.4
バグ修正
改善点
macOSでのトリガ実行
スタンバイでのsbtの実行
ロードパフォーマンスの改善
貢献者
sbt 1.1.2
バグ修正
改善点
内部
貢献者
sbt 1.1.1
バグ修正
改善点
autoStartServer設定
貢献者
sbt 1.1.0
機能、修正、互換性に影響を与える変更
機能
修正
改善点
sbtシェルとbuild.sbtの統一されたスラッシュ構文
sbtサーバ
VS Code拡張機能
project/build.propertiesを使用したスクリプトテストのフィルタリング
貢献者
sbt 1.0.xリリース
sbt 1.0.4
バグ修正
拡張機能
内部
貢献者
sbt 1.0.3
バグ修正
改善点
代替監視モード
貢献者
sbt 1.0.2
バグ修正
内部
貢献者
sbt 1.0.1
バグ修正
WatchSource
sbt 1.0.0
機能、修正、互換性に影響を与える変更
機能
修正
改善点
内部
主要な変更の詳細
Zinc 1:クラスベースの名前ハッシュ
Zinc APIの変更
sbtサーバ:ツール統合のためのJSON API
build.sbtの静的検証
競合警告の提示
sbt-cross-building
コピーオプション
ライブラリ管理APIと並列アーティファクトダウンロード
Zinc内部ストレージ用のバイナリ形式
依存関係のロック
貢献者
詳細トピック
sbtの使い方
コマンドラインリファレンス
コマンドラインに関する注意事項
プロジェクトレベルのタスク
設定レベルのタスク
一般的なコマンド
ビルド定義を管理するためのコマンド
コンソールプロジェクト
説明
設定へのアクセス
例
タスクの評価
例
状態
例
クロスビルド
はじめに
公開規約
クロスビルドされたライブラリの使用
sbt-projectmatrixを使用したプロジェクトのクロスビルド
状態を維持したプロジェクトのクロスビルド
Scalaバージョンに応じて設定を変更する
Scalaバージョン固有のソースディレクトリ
Javaプロジェクトとのクロスビルド
Scalaバージョンの切り替え
クロス公開
公開規約のオーバーライド
Scala 3固有のクロスバージョン
クロスビルドされたライブラリの使用に関する詳細
sbt-releaseに関する注記
設定システムとの連携
コマンド、タスク、設定の選択
設定の選択
タスク固有の設定
設定とタスクの検出
値と提供元
関連設定
依存関係
要求された依存関係
実際の依存関係
デリゲート
トリガーされた実行
コンパイル
テスト
複数コマンドの実行
ビルドソース
画面のクリア
設定
スクリプトモード
sbtスクリプトランナー
例
sbtサーバー
設定
Language Server Protocol 3.0
サーバーモード
サーバーの検出と認証
初期化リクエスト
textDocument/publishDiagnosticsイベント
textDocument/didSaveイベント
sbt/execリクエスト
sbt/settingリクエスト
sbt/completionリクエスト
sbt/cancelRequest
増分再コンパイルの理解
sbtヒューリスティック
sbtヒューリスティックを活用する方法
設定
クラスパス、ソース、リソース
基本
管理対象と非管理対象
名前によるソースファイルの除外
外部と内部
キー
例
コンパイラプラグインのサポート
Continuationsプラグインの例
バージョン固有のコンパイラプラグインの例
Scalaの設定
自動的に管理されるScala
scala-library依存関係の設定
追加のScala依存関係の設定
Scalaツール依存関係の設定
ローカルScalaバージョンへの切り替え
ローカルディレクトリからのScalaの使用
管理対象依存関係との混合
非管理対象依存関係のみの使用
sbtのScalaバージョン
フォーキング
フォーキングの有効化
作業ディレクトリの変更
フォークされたJVMオプション
Javaホーム
出力の設定
入力の設定
直接使用
グローバル設定
基本的なグローバル設定ファイル
グローバルプラグインを使用したグローバル設定
Javaソース
使用方法
混合モードコンパイルの既知の問題
Scalaソースディレクトリの無視
マッピングファイル
ディレクトリからの相対パス
リベース
フラット化
代替案
ローカルScala
マクロプロジェクト
はじめに
プロジェクト関係の定義
共通インターフェース
配布
パス
ファイルの作成
パスファインダー
子孫の選択
get
子の選択
既存ファイルのみ
名前フィルタ
PathFinderの組み合わせ
フィルタリング
空のPathFinder
PathFinderから文字列への変換
マッピング
ファイルフィルタ
並列実行
タスクの順序
実際的な制約
背景
設定
タスクのタグ付け
制限の定義
組み込みタグとルール
カスタムタグ
今後の作業
タスクのタグ付け
分数重み付け
デフォルトの動作
デフォルト値の調整
その他の特性
外部プロセス
使用方法
例
プロジェクトコードの実行
問題
System.exit
スレッド
逆シリアル化とクラスローディング
テスト
基本
testOnly
testQuick
タブ補完
その他のタスク
出力
テストレポート
オプション
テストフレームワーク引数
セットアップとクリーンアップ
テストの並列実行の無効化
クラスのフィルタリング
テストのフォーキング
追加のテスト設定
統合テスト
カスタムテスト設定
共有ソースを持つ追加のテスト設定
並列実行への適用
JUnit
拡張機能
カスタムテストフレームワーク
カスタムテストレポーター
拡張機能の使用
プロセス内クラスローディング
トラブルシューティング
グロブ
グロブの作成
パス名
フィルタ
深度
正規表現
FileTreeViewを使用したファイルシステムのクエリ
ファイル属性
フィルタリング
ストリーミング
実装
グロブとPathFinder
リモートキャッシング
使用方法
Mavenリポジトリ経由のリモートキャッシング
ThisBuild / rootPaths
remoteCacheId
依存関係管理
アーティファクト
デフォルトアーティファクトの選択
デフォルトアーティファクトの変更
カスタムアーティファクトの定義
.warファイルの公開
アーティファクトを持つ依存関係の使用
依存関係管理フロー
背景
キャッシングと設定
SNAPSHOTに関する注意事項
ライブラリ管理
はじめに
手動依存関係管理
自動依存関係管理
インライン宣言
依存関係
リゾルバ
デフォルトのリゾルバーのオーバーライド
すべてのビルドのすべてのリゾルバーのオーバーライド
明示的なURL
推移性の無効化
分類子
推移的依存関係の除外
ソースのダウンロード
追加属性
インラインIvy XML
Ivyホームディレクトリ
チェックサム
競合管理
排除警告
バージョンのオーバーライド
未解決の依存関係エラー
キャッシュされた解決
公開
設定
リビジョンの強制(推奨されません)
既知の制限事項
プロキシリポジトリ
概要
sbt設定
~/.sbt/repositories
プロキシリポジトリの資格情報の使用
ランチャースクリプト
sbt.override.build.repos
sbt.repository.config
Ivyリポジトリのプロキシ
公開
公開のスキップ
リポジトリの定義
ローカルへの公開
資格情報
クロス公開
公開規約のオーバーライド
公開されたアーティファクト
生成されたPOMの変更
バージョン体系
リゾルバ
Mavenリゾルバー
ローカルMavenリゾルバー
事前定義されたリゾルバー
カスタムリゾルバー
基本例
ファイルシステム
URL
SFTPおよびSSHリポジトリ
カスタムレイアウト
更新レポート
レポートのフィルタリングとアーティファクトの取得
フィルタの基本
ConfigurationFilter
ModuleFilter
ArtifactFilter
DependencyFilter
キャッシュされた解決
設定
グラフとしての依存関係
キャッシュされた解決
注意事項と既知の問題
初回実行
Ivyの忠実度は保証されません
SNAPSHOTと動的依存関係
動機
タスクとコマンド
タスク
はじめに
機能
タスクの定義
Hello World例(sbt)
キーの定義
タスクの実装
基本的なタスクの定義
入力を持つタスク
タスクスコープ
優先順位について
実装の分離
既存タスクの変更
複数のスコープからの値の取得
はじめに
例
ScopeFilter
未指定のフィルタ
フィルタ作成の詳細
ScopeFilterの組み合わせ
その他の操作
欠損値
複数のスコープからの複数の値
高度なタスク操作
ストリーム:タスクごとのロギング
条件付きタスク
Def.taskDynを使用した動的計算
Def.sequentialの使用
エラー処理
failure
result
andFinally
キャッシング
Cache.cached
前の値
Tracked.lastOutput
Tracked.inputChanged
ファイル属性の追跡
FileInfo
Tracked.inputChanged
Tracked.outputChanged
Tracked.diffInputs
Tracked.diffOutputs
ケーススタディ:sbt-scalafmt
まとめ
入力タスク
入力キー
基本的な入力タスク定義
パーサーを使用した入力タスク
パーサーの作成
タスクの作成
InputTask型
他の入力タスクの使用
入力の事前適用
InputTaskからのタスクの取得
コマンド
コマンドとは何か?
はじめに
コマンドの定義
一般的なコマンド
引数なしコマンド
単一引数コマンド
複数引数コマンド
完全な例
パースとタブ補完
基本的なパーサー
組み込みパーサー
パーサーの組み合わせ
結果の変換
タブ補完の制御
依存パーサー
状態とアクション
コマンド関連データ
プロジェクト関連データ
プロジェクトデータ
クラスパス
タスクの実行
タスクでの状態の使用
タスクでの状態の更新
タスク/設定:動機
アプリケーション
プラグインとベストプラクティス
一般的なベストプラクティス
project/ vs. ~/.sbt/
ローカル設定
.sbtrc
生成されたファイル
ハードコードしないでください
ファイルを変更しないでください
絶対パスを使用してください
パーサーコンバイナー
プラグイン
自動プラグインの使用
説明による
プラグイン依存関係
グローバルプラグイン
自動プラグインの作成
projectSettingsとbuildSettings
プラグイン依存関係の実装
ルートプラグインとトリガーされたプラグイン
autoImportを使用したインポートの制御
プラグイン例
使用例
グローバルプラグイン例
ビルド定義でのライブラリの使用例
1a) 手動管理
1b) 自動管理:直接編集アプローチ
1c) 自動管理:コマンドラインアプローチ
1d) プロジェクト依存関係
2) ライブラリの使用
プラグインの公開
ベストプラクティス
プラグインのベストプラクティス
キー命名規則:接頭辞を使用
アーティファクト命名規則
(オプション) プラグイン命名規則
デフォルトパッケージを使用しないでください
プラグインを知らせてください
既存のキーを再利用してください
設定とタスクを使用してください。コマンドは避けてください。
コア機能をプレーンなScalaオブジェクトで提供してください
設定に関するアドバイス
独自の構成は必要ないでしょう
独自の構成を定義する場合
構成との共存
生の設定と構成済みの設定を提供してください
スコープに関するアドバイス
globalSettingsにデフォルト値を提供してください
メインタスクスコープを設定に使用
globalSettingsで既存のキーを再接続
sbtでGitHub Actionsを設定する
project/build.propertiesを設定する
GitHub Actionsマニュアルを読む
基本設定
カスタムJVMオプション
キャッシング
ビルドマトリックス
サンプル.github/workflows/ci.yml設定
sbt-github-actions
sbtでTravis CIを設定する
project/build.propertiesを設定する
Travisマニュアルを読む
基本設定
プラグインビルド設定
カスタムJVMオプション
キャッシング
ビルドマトリックス
通知
不安定なネットワークまたはテストに対処する
その他の事項
サンプル設定
sbtプラグインのテスト
scriptedテストフレームワーク
ステップ1:スナップショット
ステップ2:SbtPlugin
ステップ3:src/sbt-test
ステップ4:スクリプトを書く
ステップ5:スクリプトを実行する
ステップ6:カスタムアサーション
ステップ7:テストのテスト
ステップ8:インスピレーションを得る
sbt newとテンプレート
新しいコマンドを試す
Giter8サポート
Giter8パラメータ
Giter8テンプレートの作成方法
テンプレートライセンスにCC0 1.0を使用する
sbt newの拡張方法
テンプレートリゾルバー
templateResolverInfos
クロスビルドプラグイン
ビルドにおけるライブラリとsbtプラグインの混合
方法…
クラスパス
marなど、クラスパスに新しいタイプの管理対象アーティファクトを含める
コンパイルに使用されるクラスパスを取得する
プロジェクトのコンパイル済みクラスを含む、実行時クラスパスを取得する
プロジェクトのコンパイル済みテストクラスを含む、テストクラスパスを取得する
クラスディレクトリの代わりにパッケージ化されたjarをクラスパスで使用する
構成のすべての管理対象jarを取得する
クラスパスに含まれるファイルを取得する
クラスパスエントリを作成したモジュールとアーティファクトを取得する
パスのカスタマイズ
デフォルトのScalaソースディレクトリを変更する
デフォルトのJavaソースディレクトリを変更する
デフォルトのリソースディレクトリを変更する
デフォルトの(非管理)ライブラリディレクトリを変更する
プロジェクトのベースディレクトリをソースディレクトリとして使用しないようにする
追加のソースディレクトリを追加する
追加のリソースディレクトリを追加する
ソースディレクトリ内のファイルを含める/除外する
リソースディレクトリ内のファイルを含める/除外する
特定の(非管理)ライブラリのみを含める
ファイルの生成
ソースを生成する
リソースを生成する
ビルドの検査
コマンド、タスク、または設定のヘルプを表示または検索する
使用可能なタスクを一覧表示する
使用可能な設定を一覧表示する
設定/タスクの依存関係ツリーを表示する
設定またはタスクの説明と型を表示する
設定またはタスクの委譲チェーンを表示する
関連する設定またはタスクを表示する
プロジェクトとビルドのリストを表示する
現在のセッション(一時的な)設定を表示する
sbtと現在のビルドに関する基本情報を表示する
設定の値を表示する
タスク実行の結果を表示する
コンパイルまたはテストに使用されるクラスパスを表示する
プロジェクトで検出されたメインクラスを表示する
プロジェクトで検出されたテストクラスを表示する
インタラクティブモード
タブ補完を使用する
より多くのタブ補完候補を表示する
デフォルトのJLineキーバインディングを変更する
プロンプト文字列を構成する
履歴を使用する
インタラクティブ履歴ファイルの場所を変更する
すべてのプロジェクトで同じ履歴を使用する
インタラクティブ履歴を無効にする
インタラクティブモードに入る前にコマンドを実行する
ロギングを構成して使用する
以前に実行されたコマンドのロギング出力を表示する
特定のタスクの以前のロギング出力を表示する
前回のコンパイルからの警告を表示する
グローバルにロギングレベルを変更する
特定のタスク、構成、またはプロジェクトのロギングレベルを変更する
スタックトレースの印刷を構成する
バッファリングせずにテストの出力をすぐに印刷する
カスタムロガーを追加する
タスクでログメッセージを出力する
設定でログメッセージを出力する
プロジェクトメタデータ
プロジェクト名を設定する
プロジェクトバージョンを設定する
プロジェクト組織を設定する
プロジェクトのホームページとその他のメタデータを設定する
パッケージングの構成
クラスディレクトリの代わりにパッケージ化されたjarをクラスパスで使用する
マニフェスト属性を追加する
パッケージのファイル名を変更する
パッケージの内容を変更する
コマンドの実行
バッチモードでコマンドまたはタスクに引数を渡す
連続して実行する複数のコマンドを提供する
ファイルからコマンドを読み取る
コマンドまたはタスクのエイリアスを定義する
Scala式を迅速に評価する
Scalaの構成と使用
プロジェクトのビルドに使用されるScalaバージョンを設定する
Scalaライブラリへの自動依存関係を無効にする
一時的に異なるScalaバージョンに切り替える
プロジェクトのビルドにローカルのScalaインストールを使用する
複数のScalaバージョンに対してプロジェクトをビルドする
コンパイル済みのプロジェクトクラスではなく、クラスパス上のプロジェクトの依存関係を使用してScala REPLに入る
プロジェクトの依存関係とコンパイル済みコードをクラスパス上に置いてScala REPLに入る
プラグインとビルド定義をクラスパス上に置いてScala REPLに入る
Scala REPLに入る際に評価される初期コマンドを定義する
Scala REPLを終了する際に評価されるコマンドを定義する
プロジェクトコードからScala REPLを使用する
APIドキュメントを生成する
javadocまたはscaladocを選択する
コンパイルとは独立してscaladocの生成に使用されるオプションを設定する
コンパイルオプションにscaladocのオプションを追加する
コンパイルとは独立してjavadocの生成に使用されるオプションを設定する
コンパイルオプションにjavadocのオプションを追加する
管理対象依存関係の外部Scaladocへの自動リンクを有効にする
管理対象依存関係の外部Scaladocへの手動リンクを有効にする
ライブラリのAPIドキュメントの場所を定義する
カスタムタスクの定義
特定のサブプロジェクトでテストを実行するタスクを定義する
起動時にアクションを実行する方法
ファイルの入力と出力を追跡する
ファイル入力
増分ビルド
ファイル出力
フィルタ
出力のクリーンアップ
ファイル変更の追跡
継続的ビルドファイル監視
部分パイプライン評価/エラー処理
メモリの問題のトラブルシューティング
シーケンス
Def.sequentialを使用してシーケンシャルタスクを定義する
project/build.properties
project/style.sbt
build.sbt
Def.taskDynを使用して動的タスクを定義する
project/build.properties
project/style.sbt
build.sbt v1
build.sbt v2
入力タスクの後に行動を実行する
src/main/scala/Greeting.scala
build.sbt v1
build.sbt v2
Def.inputTaskDynを使用して動的入力タスクを定義する
build.sbt v1
build.sbt v2
コマンドを使用してシーケンスする方法
カスタム依存関係構成を定義する方法
カスタム依存関係構成に関する注意事項
基本的なカスタム構成の例
project/FuzzPlugin.scala
build.sbt
サンドボックス構成の例
project/ScalafmtPlugin.scala
テスト構成を追加するにはどうすればよいですか?
例
.sbtビルドの例
.scalaファイルを使用した.sbtビルドの例
project/Resolvers.scala
project/Dependencies.scala
project/ShellPromptPlugin.scala
build.sbt
高度な構成の例
高度なコマンドの例
索引
値と型
依存関係管理
設定とタスク
ビルド構造
メソッド
設定とタスク
ファイルとIO
依存関係管理
構文解析
開発者向けガイド(開発中)
sbt 1.0に向けて
概念
ビルド定義のソース互換性
プラグインのバイナリ互換性
モジュール化
モジュール概要
IO API (sbt/io)
シリアル化API (sbt/serialization)
Util API (sbt/util)
ライブラリ管理API (sbt/librarymanagement)
増分コンパイラAPI (sbt/zinc)
ビルドAPI (未定)
sbtランチャー (sbt/launcher)
クライアント/サーバー (未定)
ウェブサイト (sbt/website)
sbtコーディングガイドライン
一般的な目標
古い非推奨事項のクリーンアップ
警告ゼロを目指す(非推奨を除く)
ドキュメント
モジュール設計
小さく始める
公開APIはインターフェースに対してコーディングする必要があります
実装の詳細を隠す
相互依存性を少なくする
外部クラスを隠す
内部モジュールを隠す
コンパイラフラグ
パッケージ名と組織名
バイナリ回復力
MiMa
公開トレイトにはdef宣言のみを含める必要があります
抽象クラスも役立ちます
トレイトと抽象クラスをシールする
リーフクラスをファイナライズする
タイプリストとサブクラス継承
ケースクラスを避け、sbt-datatypeを使用する
デフォルトパラメータ値よりもメソッドオーバーロードを優先する
その他の公開APIに関する事項
文字列型のプログラミングを避ける
def applyの過剰使用を避ける
Seqではなく、特定のデータ型(Vector、List、またはArray)を使用する
Setで副作用のあるtoSeqまたは何かを呼び出すのを避ける
MapでtoSeqを呼び出すのを避ける
Javaの相互運用性が必要な場合、シグネチャに関数とタプルを使用しない
スタイルに関する事項
scalafmtを使用する
プロシージャ構文を避ける
可能な場合は、コンパニオンオブジェクトでタイプリストのインスタンスを定義する
構文のための暗黙的な変換(enrich-my-libraryパターン)はインポートする必要があります
sbt-datatype
プラグインの使用
データ型スキーマ
レコード
インターフェース
列挙型
バイナリ互換性を維持するためにデータ型を使用する
JSONコーデックの生成
プロトコル、レコードなどの既存のパラメータ
設定
構文概要
コンパイラインターフェース
最も具体的なソースを取得する
sbtランチャー
sbtランチャーの入門
概要
アプリケーション
サーバー
アプリケーション/サーバーの解決
起動済みアプリケーションの作成
アプリケーションの実行
実行
Sbtランチャーアーキテクチャ
モジュール解決
クラスローダーのキャッシングと分離
キャッシング
ロック
サービス検出と分離
sbtランチャー構成
例
1. Scala構成
2. アプリケーション識別
3. リポジトリセクション
4. ブートセクション
5. Ivyセクション
6. サーバーセクション
変数置換
構文
注記
基本原則
ビルド状態の紹介
設定アーキテクチャ
タスクアーキテクチャ
設定コア
例
設定
設定システムの例
使用例
sbt設定に関する議論
スコープ
設定の構築
設定の定義
設定の初期化
sbtを使用してコマンドラインアプリケーションを作成する
Hello Worldの例
ビルド定義: build.sbt
アプリケーション: Main.scala
ランチャー構成ファイル: hello.build.properties
アーカイブされたページ
Hello, World
sbt newコマンド
アプリの実行
sbtシェルの終了
ビルド定義
詳細な内容
結合されたページ
学習
ダウンロード
参加する