sbt compile
概要
sbt [query / ] compile
sbt [query / ] Test / compile
説明
compile タスクは、選択されたサブプロジェクトとそのサブプロジェクト依存関係をコンパイルする。sbt 2.x 以降、コンパイルされたアーティファクトは自動的にキャッシュされる。
生の Scala コンパイラでの Scala コードのコンパイルは遅いため、sbt の開発努力の相当部分はコンパイル高速化の様々な戦略に費やされている。
コンパイラ再起動のオーバーヘッドを削減
sbt server はバックグラウンドで稼働し続け、Scala のコンパイルが同じ Java 仮想マシン (JVM) 上で実行される。JVM を「温まった」状態に保つことでコンパイルが大幅に高速化される。コンパイラのクラスロードと Just-in-Time コンパイラによる最適化に時間がかかるためである。
差分コンパイル
任意のソース A.scala が変更されると、sbt は A.scala の変更に伴って再コンパイルされる他のソースファイルを最小限に抑えるよう努める。言語構成要素間の依存関係を追跡し、必要なソースのみを再コンパイルするこのプロセスは差分コンパイルと呼ばれる。
(リモート)キャッシュ
sbt 2.x では、コンパイルされたアーティファクトはセッションやビルド間でキャッシュされるだけでなく、Bazel 互換のリモートキャッシュを使って異なるマシン間でオプションとしてキャッシュすることもできる。詳細はキャッシュ化を参照。
Test / compile
Test / compile のようにコンフィギュレーションで compile タスクをスコープ付けすると、テストソースとそのソース依存関係をコンパイルする。
コンパイル設定
scalaVersion
コンパイルに使用する Scala のバージョン。
scalaVersion := "3.8.1"
scalacOptions
Scala コンパイラのオプション。
Compile / scalacOptions += "-Werror"
javacOptions
Java コンパイラのオプション。
Compile / javacOptions ++= List("-Xlint", "-Xlint:-serial")