| 原作者 | マーク・ハラ |
|---|---|
| 開発者 | スカラセンター[1] |
| 安定リリース | 1.9.9 [2]
/ 2024年2月23日[3] |
| リポジトリ |
|
| 書かれた | スカラ |
| オペレーティング·システム | クロスプラットフォーム |
| プラットフォーム | ジャワ |
| タイプ | ビルドの自動化 |
| ライセンス | BSDライセンス |
| Webサイト | scala.org より |
sbt(もともとはシンプルなビルドツールでしたが、現在では何も意味しません[4])は、 Java、Scala、Kotlinプロジェクトをビルドできるオープンソースの ビルドツールです。アプリケーション、ライブラリ、フレームワークの構築、コンパイル、テスト、パッケージ化のプロセスを合理化することを目的としています。sbtは適応性が高く、開発者はプロジェクトの特定のニーズに応じてビルドプロセスをカスタマイズできます。
sbtはScalaプロジェクトの構築と管理のプロセスを簡単かつ効率的にするための幅広い機能を提供します。[5]主な機能は次のとおりです。
- 依存関係管理:プロジェクトの依存関係を自動的にダウンロードして処理する機能により、sbt は外部ライブラリとフレームワークの使用を容易にします。
- 増分コンパイル' :' sbt は変更されたコード部分のみを再コンパイルできるため、開発サイクル中に大幅な時間の節約が実現します。
- カスタマイズ可能なビルド プロセス: sbtは高度にカスタマイズ可能で、開発者はカスタム ビルド設定を定義し、プロジェクトの固有の要件に合わせてビルド プロセスを構成できます。
- プラグイン エコシステム: sbt は、コード品質チェック、デプロイメント自動化、テスト カバレッジ レポートなどの追加機能を組み込んで機能性を強化するプラグイン エコシステムを誇ります。新しいプラグインの開発と統合は完全にサポートされ、奨励されています。
- 継続的なコンパイルとテスト: sbtを使用すると、開発者はソース ファイルが変更されるたびにシステムが自動的に再コンパイルされ、テストが再実行されるように設定できます。
- マルチプロジェクト ビルド:複数の Scala プロジェクトに取り組んでいる開発者向けに、sbt は単一のビルド内でそれらを管理するための便利な機能を提供します。
- インタラクティブ シェル: sbtにはインタラクティブ シェルが装備されており、開発者は開発プロセス全体を通じてタスクやコマンドを簡単に実行できます。
- 並列タスク実行: sbt はタスクを並列に実行できるため、大規模プロジェクトのビルド時間が短縮されます。
- IDE との統合:開発エクスペリエンスを最適化するために、sbt はIntelliJ IDEAやVisual Studio Codeなどの一般的な統合開発環境(IDE)とスムーズに統合されます。
sbtはScalaコミュニティの事実上のビルドツールであり、 [6]例えばScala 2およびScala 3コンパイラ自体、[7] [8] Play Framework、人気のチェスサーバーLichessなどで使用されています。sbtプロジェクトは「ブートストラップ」されており、sbtを使用してビルドされており、ドッグフーディングを肯定的な機能と考えています。
歴史
sbtはもともと2008年にマーク・ハラによってオープンソースプロジェクトとしてリリースされました。[9]長年にわたり、数多くのリリースを通じて大きく進化し、それぞれに新機能、バグ修正、機能強化が導入されました。ここでは、重要なリリースの概要と、導入された主な変更点と革新点を紹介します。[10]
- sbt 0.3.2 (2008): これはsbtの最初の公式リリースでした。プロジェクト定義、依存関係管理、コンパイルなどの基本的な機能が導入されました。
- sbt 0.7 (2009): Scala プロジェクトの構築と管理のための基本的なフレームワークを確立しました。主な機能には、増分コンパイル、依存関係の管理、簡単なタスク実行などが含まれます。
- sbt 0.10 (2011): ビルド定義構文の大幅な見直しにより、表現力と柔軟性が向上しました。また、パフォーマンス、依存関係管理、構成も強化されました。
- sbt 0.12 (2012): マルチモジュール プロジェクトのサポートが改善され、カスタム構成を定義する機能が追加され、プラグイン開発が簡素化されました。
- sbt 0.13 (2013): 使いやすさとパフォーマンスに重点を置きました。このバージョンでは、プロジェクトの作成と管理のためのWebベースのツールであるActivator [11]が導入されました。その他の機能には、増分マクロコンパイル、ビルド定義エラーの処理の改善、さまざまなパフォーマンス最適化などがあります。0.13は、その後4年間、sbtのメインバージョンであり続けました。
- sbt 1.0 (2017): sbtコードベースに大幅な変更を導入し、パフォーマンスと安定性に重点を置きましたが、可能な限り古いバージョンとの互換性を維持するよう努めました。新しい機能には、タスクと設定を定義するための統一されたスラッシュ構文、依存関係管理の改善、ビルド定義に使用される言語バージョンとしてのScala 2.12が含まれます。さらに、新しいZinc 1.0増分コンパイラへの切り替えにより、増分コンパイルのパフォーマンスがさらに向上しました。[12]
- sbt 1.1 (2018): このリリースではsbtサーバーが起動し、IDEやその他のツールがLanguage Server Protocol (LSP)を介してsbtと対話できるようになりました。また、Scala.js [13]とScala Native [14]のクロスビルドサポートが追加され、さまざまなタスクのパフォーマンスが向上しました。
- sbt 1.3 (2019): このバージョンでは、デフォルトの依存関係マネージャーとしてCoursier [15]を採用することで依存関係の解決を高速化し、ユーザーエクスペリエンスを大幅に向上させました。さらに、ビルドキャッシュメカニズムの改善やJDK 11のサポートなどの機能強化が行われました。
- sbt 1.5 (2021): Scala 3のサポートが追加されました。BSP (Build Server Protocol)のサポートも強化され、[16] IDEとの統合が向上しました。
- sbt 1.8 (2022): このリリースでは、Coursier が更新され、Ivy サポートが改善されました。
- sbt 1.9 (2023): Coursier のさらなるアップデートと、新しいプロジェクトの作成に役立つテキストベースのメニュー。
ビルドファイル
sbtビルドは.sbtファイル[17]をbuild.sbt使用して定義できます。以下はビルド定義
の例です。
val scalaTest = "org.scalatest" %% "scalatest" % "3.2.14" val akkaVersion = "2.6.20" val akkaActor = "com.typesafe.akka" %% "akka-actor" % akkaVersion val akkaCluster = " com.typesafe.akka" %% "akka-cluster" % akkaVersion
// このビルドで使用する Scala バージョンを 2.13.10 に設定します。ThisBuild
/ scalaVersion := "2.13.10" ThisBuild / version := "0.1.0-SNAPSHOT" ThisBuild / organization := "com.example "
lazy val root = ( project in file ( "." ) ) .aggregate ( helloCore ) .dependsOn ( helloCore ) .settings ( name : = "Hello" , // テスト用に単一の依存関係を追加します。libraryDependencies + = scalaTest % Test )
lazy val helloCore = ( project in file ( "core" )) .settings ( name : = "Hello Core" , libraryDependencies += scalaTest % Test , // 複数の依存関係を追加します。libraryDependencies ++= List ( akkaActor , akkaCluster ) )
使用例
sbt はビルドコマンドごとに呼び出されることもありますが、コマンドが指定されていない場合は対話モードに入ることもあります。現在のビルドのビルド製品をクリーンアップするには:
$ sbt クリーン
同じ行に複数のコマンドを使用できます。「Foo」という名前の単一のテストを実行し、エクスポートされた jar を公開するには、次のようにします。
$ sbt "testOnly Foo"を公開する
拡張性と統合
sbtの機能はプラグインアーキテクチャを通じて拡張できます。[18]コミュニティが貢献するプラグインは、署名、パッケージ化、成果物の公開とリリース、ブログやデータベースなどの他のサービスへの接続、他のテクノロジーとの統合などの領域をカバーしています。
IntelliJ IDEA と VS Code はどちらも、Scala プラグインを通じてsbt をサポートしています。どちらの IDE でも、初期のsbtビルド ファイルを使用して新しいプロジェクトを作成することができます。また、プロジェクトにすでにsbtビルド ファイルが含まれている場合は、そのファイルを使用して、特定の IDE のプロジェクト構成を生成することもできます。
比較
ビルドツールの中でsbtの代わりとなる主なものはGradleとApache Mavenで、どちらも JVM プラットフォームで開発されたプロジェクト向けの定評のあるビルドツールです。Scala エコシステムでは、もう 1 つの人気のあるビルドツールは Mill です。[19] sbt 、Gradle、Apache Maven、および Millのどれを選択するかは、プロジェクトの特定の要件とツールの習熟度によって異なります。主に Scala で作業している場合はsbtまたは Mill の方が適している可能性がありますが、複数の言語やテクノロジーで作業している場合は、他の 2 つのいずれかの方が適している可能性があります。
参照
参考文献
- ^ 「Lightbendがsbtの所有権をScala Centerに譲渡」scala-lang.org . 2024年3月8日閲覧。
- ^ eed3si9n (2023-10-22). 「リリース」. github.com . 2023-11-11閲覧。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ eed3si9n (2023-10-22). "1.9.9". github.com . 2023-11-11閲覧。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ 「sbt リファレンスマニュアル — よくある質問」www.scala-sbt.org . 2023 年 6 月 15 日閲覧。
- ^ 「sbt リファレンスマニュアル — sbt リファレンスマニュアル」www.scala-sbt.org . 2023 年 6 月 15 日閲覧。
- ^ 「一緒にソフトウェアをより良く構築する」。GitHub 。2023年6月15日閲覧。
- ^ Welcome!、Scalaプログラミング言語、2023-06-14、2023-06-15取得
- ^ Dotty、Programming Methods Laboratory EPFL、2023-06-14、2023-06-15取得
- ^ 「sbt リファレンスマニュアル — 開発者ガイド (作業中)」。www.scala-sbt.org 。2023年 6 月 15 日閲覧。
- ^ “Releases · sbt/sbt”. GitHub . 2023年6月15日閲覧。
- ^ Inc、Lightbend。「Typesafe Activator 1.3.0 リリース: 新しい sbt サーバーと UI が含まれています | @lightbend」。Lightbend。2023年6 月 15 日閲覧。
{{cite web}}:|last=一般的な名前があります (ヘルプ) - ^ 「Zinc 1.0でコンパイル時間を短縮」www.scala-lang.org . 2023年6月15日閲覧。
- ^ "Scala.js". Scala.js . 2023年6月15日閲覧。
- ^ 「Scala Native — Scala Native 0.4.14 ドキュメント」。scala -native.org 。 2023年6月15日閲覧。
- ^ 「Coursier · Pure Scala Artifact Fetching」。get-coursier.io 。 2023年6月15日閲覧。
- ^ 「ビルドサーバープロトコル」。build -server-protocol.github.io . 2023年6月15日閲覧。
- ^ sbt: .sbt ビルド定義
- ^ 「プラグイン」. sbt . 2014年10月17日閲覧。
- ^ 「Mill の紹介 :: Mill」. mill-build.com . 2023年6月15日閲覧。
外部リンク
- 公式サイト
