SBT(ビルドツール)

業務の説明でSBTについて説明して頂いた。

どうでもいいがgoogleの検索トップはソフトバンク・テクノロジー(違う)

 

自身の理解を深めるために調査した内容を書いていきます。

SBTとは

sbt

SBTはビルドツールの一種

JavaのAntビルドやMavenビルドに相当するもの

対応言語はScalaJava(基本的にScalaで使われることが多い?)

最近ではGradleというビルドツールもありますが、

Scalaのみのプロジェクトであればsbtがデファクトスタンダード

言って問題ないようです。

 

スポンサーであるLightbendでは商用サポート・サービスを行っており

「自信をもってミッションクリティカルなシステムに採用することができる。」

とのこと

Cloud Native Application Platforms | @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」がベースディレクト

Mavenと同じディレクトリ構成

  • ビルドサポートファイル

以下のようにproject配下にヘルパーオブジェクトなど定義が可能とのこと

プロジェクトが肥大化した場合に有効とのこと(詳細はサイト参照)

build.sbt
project/
  Dependencies.scala

 

SBTの使い方

下記サイトに利用方法がまとめられている。

www.scala-sbt.org

上記は日本語ページだが英語、中国語、スペイン語もある。

訳は自動翻訳ではなく有志がやっている模様。githubにissue管理されている。

 

公式ページ

www.scala-sbt.org


 

 

参考サイト

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/