Sbt
sbtは、ScalaおよびJavaのためのオープンソースのビルドツールである。JavaのMavenやAntに相当するツールである。
|
| |
| 開発元 | Scala Center |
|---|---|
| 最新版 |
2.0.1
/ 2026年6月29日 [1] |
| リポジトリ | |
| プログラミング 言語 | Scala |
| 対応OS | クロスプラットフォーム |
| プラットフォーム | Java |
| 種別 | ビルド自動化 |
| ライセンス | BSD License |
| 公式サイト |
www |
sbtは、ScalaおよびJavaのためのオープンソースのビルドツールである。JavaのMavenやAntに相当するツールである。
主な機能は以下の通りである。
- Scalaのコードのネイティブサポートと、さまざまなScalaのテストフレームワークとの統合機能
- 継続的コンパイル、継続的テスト、継続的開発の機能
- インクリメンタルなテストとコンパイルの機能(変更を加えたソースコードのみが再コンパイルされる、コードの変更の影響を受けるテストのみが再実行されるなど)
- ビルドの設定は、ScalaのDSLを用いて記述する
- Apache Maven および Apache Ivy 形式のリポジトリをサポートする Coursier[2] を使用した依存管理。かつては Coursier ではなく Apache Ivy だった[3]。
- 高速なイテレーションとデバッグのためにScalaインタプリタと統合されている
- Java/Scalaプロジェクトの混在をサポート
sbtはScalaコミュニティにおけるデファクトなビルドツールであり[4]、Lift web framework[5]やPlay Frameworkでも使用されている。
かつてsbtを開発していたLightbend, Inc.は、sbtを「Scalaのプロジェクトを構築するのに間違いなく最適なツールであり、インクリメンタル・コンパイルとインタラクティブ・シェルが最も優れたツールである」と述べている[6]。インクリメンタル・コンパイルモードに入ると、Scalaコンパイラは1回だけ初期化され、その後のスタートアップのコストを削減してくれ、ソースファイルの変更を追跡することで、その変更が影響する依存関係のみが再コンパイルされる。インタラクティブ・シェルは、ビルドの設定をその場で修正することを可能にし、プロジェクトに関係するすべてのクラスファイルとScala REPLに読み込んでくれる[7]。インクリメンタル・コンパイルが人気になったことで、Typesafeはこの機能をZincという独立したコンポーネントの形で抽出するようになった[6]。
sbtのプロセスAPIがScala 2.9で採用されたとき、すでにScala標準ライブラリにフィードバックされていた[8]。
歴史
sbtは2008年12月18日に初めて、オリジナルの作者Mark Harrahによって公式に発表された。2011年~2023年6月は Lightbend, Inc. が管理していた。それ以降は Scala Center が管理している[9]。
当初は"Simple Build Tool"の略であるとされていたが、現在は単に"sbt"であって略称とは考えられていない[10]。
ビルドファイル
sbtのビルドは.sbtファイルを用いて定義される[11]。以下は、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の機能はプラグインアーキテクチャを利用して拡張することができる[12]。コミュニティによるコントリビューションを受け入れるためのウェブサイトがセットアップされており、署名、パッケージング、高階、アーティファクトのリリース、ブログらデータベースなどの他のサービスへの接続、Androidプラットフォームへのデプロイなどの他の技術との統合といったさまざまな機能を提供している[13]。
プロジェクトファイルを自動的に生成するプラグインが Eclipse 向けに提供されている。IntelliJ IDEA では、JetBrains 公式の Scala プラグインで sbt がサポートされている。
関連項目
出典
- ^ Releases · sbt/sbt
- ^ Overview · Coursier
- ^ sbt Reference Manual — sbt 1.3.x releases
- ^ Public repositories hosted on github which mention sbt
- ^ Getting started for Lift
- ^ a b “Zinc and Incremental Compilation”. typesafe's blog (2012年8月13日). 2012年8月22日閲覧。
- ^ Goldin. “sbt Scala Build Tool”. 2012年5月7日閲覧。
- ^ “Scala 2.9.0 final” (2011年5月12日). 2012年8月22日閲覧。
- ^ “Lightbend transfers ownership of sbt to the Scala Center”. scala-lang.org. 2023年9月4日閲覧。
- ^ “sbt Reference Manual — Frequently Asked Questions”. www.scala-sbt.org. 2019年6月8日閲覧。
- ^ sbt: .sbt build definition
- ^ “Plugins”. sbt. 2014年10月17日閲覧。
- ^ “sbt Community Plugins”. 2014年10月17日閲覧。
外部リンク
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.