私はいくつかのプロジェクトが相互に依存関係にあるSBTマルチプロジェクトを持っています。このような:
lazy val coreProject: Project = Project(
id = "core-project",
base = file("./core-project"),
// other stuff
))
lazy val extensions: Project = Project(
id = "extensions",
base = file("./extensions"),
dependencies = Seq(coreProject)
)
これで、test-folderの 'core'プロジェクトにいくつかのテストコードがあります。モックやテストユーティリティのようなものもあります。次に、これらのテストユーティリティを拡張機能のテストで使用したいと思います。依存関係を宣言したので、本番コードではこれは機能します。ただし、依存関係はテストに対して保持されないようです。テストを実行すると、不足しているクラスのコンパイルエラーが発生します。これらのクラスは、コアプロジェクトのテストコードからのものです。
依存関係にもテストスコープのテストコードを含める必要があることをsbtに伝えるにはどうすればよいですか? 「エクステンション」プロジェクトのテストコードでモックを再利用できるようにするには?
そのようです:
dependencies = Seq(coreProject % "compile->compile;test->test")
これについては、 Getting-Started-Multi-Project ガイドの「構成ごとのクラスパスの依存関係」で説明しています。
これは、最初のプロジェクト宣言の後に.dependsOn(coreProject % "compile->compile;test->test")
を使用して行うこともできます。
lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")