Sbt

sbtは、ScalaおよびJavaのためのオープンソースのビルドツールである。JavaのMavenやAntに相当するツールである。

主な機能は以下の通りである。

 Scalaのコードのネイティブサポートと、さまざまなScalaのテストフレームワークとの統合機能
 継続的コンパイル、継続的テスト、継続的開発の機能
 インクリメンタルなテストとコンパイルの機能（変更を加えたソースコードのみが再コンパイルされる、コードの変更の影響を受けるテストのみが再実行されるなど）
 ビルドの設定は、ScalaのDSLを用いて記述する
 Apache Maven および Apache Ivy 形式のリポジトリをサポートする CoursierOverview · Coursier を使用した依存管理。かつては Coursier ではなく Apache Ivy だったsbt Reference Manual — sbt 1.3.x releases。
 高速なイテレーションとデバッグのためにScalaインタプリタと統合されている
 Java/Scalaプロジェクトの混在をサポート

sbtはScalaコミュニティにおけるデファクトなビルドツールでありPublic repositories hosted on github which mention sbt、Lift web frameworkGetting started for LiftやPlay Frameworkでも使用されている。

かつてsbtを開発していたは、sbtを「Scalaのプロジェクトを構築するのに間違いなく最適なツールであり、インクリメンタル・コンパイルとインタラクティブ・シェルが最も優れたツールである」と述べている。インクリメンタル・コンパイルモードに入ると、Scalaコンパイラは1回だけ初期化され、その後のスタートアップのコストを削減してくれ、ソースファイルの変更を追跡することで、その変更が影響する依存関係のみが再コンパイルされる。インタラクティブ・シェルは、ビルドの設定をその場で修正することを可能にし、プロジェクトに関係するすべてのクラスファイルとScala REPLに読み込んでくれる。インクリメンタル・コンパイルが人気になったことで、Typesafeはこの機能をZincという独立したコンポーネントの形で抽出するようになった。

sbtのプロセスAPIがScala 2.9で採用されたとき、すでにScala標準ライブラリにフィードバックされていた。

 歴史 
sbtは2008年12月18日に初めて、オリジナルの作者Mark Harrahによって公式に発表された。2011年～2023年6月は Lightbend, Inc. が管理していた。それ以降は Scala Center が管理している。

当初は"Simple Build Tool"の略であるとされていたが、現在は単に"sbt"であって略称とは考えられていない。

 ビルドファイル 
sbtのビルドは.sbtファイルを用いて定義されるsbt: .sbt build definition。以下は、build.sbtのビルド定義の一例である。
val scalaTest   = "org.scalatest" %% "scalatest" % "3.0.5"
val akkaVersion = "2.4.2"
val akkaActor   = "com.typesafe.akka" %% "akka-actor" % akkaVersion
val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % akkaVersion

// このビルドで使用する Scala のバージョンを 2.12.8 に設定する
ThisBuild / scalaVersion := "2.12.8"
ThisBuild / version      := "0.1.0-SNAPSHOT"
ThisBuild / organization := "com.example"

lazy val root = (project in file("."))
  .aggregate(helloCore)
  .dependsOn(helloCore)
  .settings(
    name := "Hello",
    // テストのために、依存関係を1つ追加する。
    libraryDependencies += scalaTest % Test
  )

lazy val helloCore = (project in file("core"))
  .settings(
    name := "Hello Core",
    libraryDependencies += scalaTest % Test,
    // 複数の依存関係を追加する。
    libraryDependencies ++= Seq(akkaActor, akkaCluster)
  )

 使用例 
sbtは各ビルドコマンドごとに起動することもあるが、コマンド無しで実行した場合には、インタラクティブモードで起動することもできる。たとえば、現在のビルドのビルドプロダクトをクリーンするには、以下のコマンドを実行する。
$ sbt clean
複数のコマンドを同じ行で指定することもできる。"Foo"という名前のテストを実行し、その後にエクスポートしたjarを公開するには、以下のコマンドを実行する。
$ sbt "testOnly Foo" publish

 拡張性と統合 
sbtの機能はプラグインアーキテクチャを利用して拡張することができる。コミュニティによるコントリビューションを受け入れるためのウェブサイトがセットアップされており、署名、パッケージング、高階、アーティファクトのリリース、ブログらデータベースなどの他のサービスへの接続、Androidプラットフォームへのデプロイなどの他の技術との統合といったさまざまな機能を提供している。

プロジェクトファイルを自動的に生成するプラグインが Eclipse 向けに提供されている。IntelliJ IDEA では、JetBrains 公式の Scala プラグインで sbt がサポートされている。

 関連項目 



 出典 

 外部リンク 


Category:Java開発ツール
Category:未査読の翻訳があるページ
Category:Scalaでプログラムされた自由ソフトウェア
Category:Scala