SBT(ビルドツール)
業務の説明でSBTについて説明して頂いた。
どうでもいいがgoogleの検索トップはソフトバンク・テクノロジー(違う)
自身の理解を深めるために調査した内容を書いていきます。
SBTとは
SBTはビルドツールの一種
対応言語はScalaとJava(基本的にScalaで使われることが多い?)
最近ではGradleというビルドツールもありますが、
Scalaのみのプロジェクトであればsbtがデファクトスタンダードと
言って問題ないようです。
スポンサーであるLightbendでは商用サポート・サービスを行っており
「自信をもってミッションクリティカルなシステムに採用することができる。」
とのこと
サポートを受ける方法はStackOverFlowで【sbt】というタグを設定することで受けることができる。
特徴
こちらの引用となります。
https://www.scala-sbt.org/1.x/docs/index.html
- 単純なプロジェクトでは設定がほとんどいらない。
- Scalaコードの柔軟性をフルに活用できるScalaベースのビルド定義を使う
- コンパイラから抽出した情報を利用した正確なインクリメンタル再コンパイル
- トリガー実行による継続的なコンパイルとテスト
- jarをパッケージ化して公開する
- scaladoc でドキュメントを生成
- Scala/Javaの混合プロジェクトをサポート
- ScalaCheck、specs、ScalaTestでのテストをサポートしています。JUnitはプラグインでサポートされています。
- プロジェクトクラスとクラスパス上の依存関係でScala REPLを起動します。
- サブプロジェクトでモジュール化をサポート
- 外部プロジェクトのサポート
- タスクの並列実行 (テストの並列実行を含む)
- ライブラリ管理のサポート: インライン宣言、外部IvyまたはMaven設定ファイル、または手動管理
仕様
- 定義ファイル
「build.sbt」に定義されているが、「*.sbt」なら何でもいいらしい。
- ベースディレクトリ
「build.sbt」が配置されているディレクトリがベースディレクトリになる。
「/tmp/foo/build.sbt」ならば、「/tmp/foo」がベースディレクトリ
- ビルドサポートファイル
以下のようにproject配下にヘルパーオブジェクトなど定義が可能とのこと
プロジェクトが肥大化した場合に有効とのこと(詳細はサイト参照)
build.sbt
project/
Dependencies.scala
SBTの使い方
下記サイトに利用方法がまとめられている。
上記は日本語ページだが英語、中国語、スペイン語もある。
訳は自動翻訳ではなく有志がやっている模様。githubにissue管理されている。
公式ページ
参考サイト
https://www.scala-sbt.org/1.x/docs/ja/Getting-Started.html
https://ja.wikipedia.org/wiki/Sbt
https://qiita.com/keiSunagawa/items/d9dfad172713c31ddbc1
https://gist.github.com/hnaohiro/5c19c0c404e0848147300183f929b2b0
https://www.it-swarm.dev/ja/scala/sbt%E3%81%A8gradle%E3%81%AE%E6%AF%94%E8%BC%83/1066694586/