scalaVersion
はコンパイルに使用する Scala のバージョンを設定します。デフォルトでは、sbt はこのバージョンの Scala ライブラリへの依存関係も追加します。この自動依存関係を無効にする方法については、次のセクションを参照してください。Scala バージョンが指定されていない場合、sbt がビルドされたバージョンが使用されます。Scala のバージョンを明示的に指定することをお勧めします。
たとえば、Scala のバージョンを「2.11.1」に設定するには、次のようにします。
scalaVersion := "2.11.1"
sbt はデフォルトで Scala 標準ライブラリへの依存関係を追加します。この動作を無効にするには、autoScalaLibrary
設定を false に設定します。
autoScalaLibrary := false
すべてのスコープで Scala バージョンを特定の値に設定するには、++
コマンドを使用します。たとえば、一時的に Scala 2.10.4 を使用するには、次のように実行します。
> ++ 2.10.4
Scala ホームディレクトリへのパスを使用して scalaHome
設定を定義すると、その Scala インストールが使用されます。ローカル Scala バージョンを使用する場合でも、sbt は scalaVersion
を設定する必要があります。例:
scalaVersion := "2.10.0-local"
scalaHome := Some(file("/path/to/scala/home/"))
クロスビルド を参照してください。
consoleQuick
アクションは依存関係を取得し、それらを Scala REPL のクラスパスに配置します。プロジェクトのソースはコンパイルされませんが、ソース依存関係のソースはコンパイルされます。クラスパスにテスト依存関係を含めて、テストソースをコンパイルせずに REPL を起動するには、Test/consoleQuick
を実行します。これにより、メインソースのコンパイルが強制されます。
console
アクションは依存関係を取得し、ソースをコンパイルして、それらを Scala REPL のクラスパスに配置します。クラスパスにテスト依存関係とコンパイルされたテストソースを含めて REPL を起動するには、Test/console
を実行します。
> consoleProject
詳細については、consoleProject ページを参照してください。
console / initialCommands
を設定して、console
および consoleQuick
の実行時に評価する初期ステートメントを設定します。consoleQuick
を個別に設定するには、consoleQuick / initialCommands
を使用します。例:
console / initialCommands := """println("Hello from console")"""
consoleQuick / initialCommands := """println("Hello from consoleQuick")"""
consoleProject
コマンドは、consoleProject / initialCommands
によって個別に構成されます。デフォルトでは、console / initialCommands
の値は使用しません。例:
consoleProject / initialCommands := """println("Hello from consoleProject")"""
console / cleanupCommands
を設定して、console
および consoleQuick
によって開始された Scala REPL の終了後に評価するステートメントを設定します。consoleQuick
を個別に設定するには、consoleQuick / cleanupCommands
を使用します。例:
console / cleanupCommands := """println("Bye from console")"""
consoleQuick / cleanupCommands := """println("Bye from consoleQuick")"""
consoleProject
コマンドは、consoleProject / cleanupCommands
によって個別に構成されます。デフォルトでは、console / cleanupCommands
の値は使用しません。例:
consoleProject / cleanupCommands := """println("Bye from consoleProject")"""
sbt は sbt 自体と同じ JVM でテストを実行し、Scala クラスはアプリケーションクラスと同じクラスローダーにはありません。これは console
の場合も、run
がフォークされない場合も同様です。したがって、Scala インタープリターを使用する場合、次のようなエラーメッセージを回避するために、適切に設定することが重要です。
Failed to initialize compiler: class scala.runtime.VolatileBooleanRef not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programmatically, settings.usejavacp.value = true.
重要なのは、embeddedDefaults を使用してインタープリターの設定を初期化することです。例:
val settings = new Settings
settings.embeddedDefaults[MyType]
val interpreter = new Interpreter(settings, ...)
ここで、MyType
はインタープリターのクラスパスと、そのアプリケーションクラスローダーに含める必要のある代表的なクラスです。詳細については、embeddedDefaults が追加されることになった 元の提案 を参照してください。
同様に、次の例のように、ILoop の break および breakIf メソッドを使用する場合、代表的なクラスを型引数として使用します。
def x(a: Int, b: Int) = {
import scala.tools.nsc.interpreter.ILoop
ILoop.breakIf[MyType](a != b, "a" -> a, "b" -> b )
}