次の SBT ビルド セットアップが必要です。
object MyBuild extends Build {
lazy val core = Project("core", file("core"))
.dependsOn(testkit % "test")
lazy val testkit = Project("testkit", file("testkit"))
.dependsOn(core % "compile")
}
がcore
ドメイン オブジェクトを含むメイン モジュールであり、testkit
ドメインオブジェクトや.core
このセットアップでは、SBT はエラーを返しますが、実際には異なる構成 (をコンパイルし、次に に依存してコンパイルし、次に両方に依存してコンパイルCyclic reference
する) を使用しているため、循環的な依存関係はありません。core
testkit
core
core
test
dependsOn
useの 1 つを置き換えることで、この問題を回避する汚い方法を見つけましたunmanagedClasspath
。たとえば、次のようになります。
.settings(unmanagedClasspath in Compile <+= (packageBin in (LocalProject("core"), Compile)))
これはハックのように感じられ、sbt-idea
(とりわけ) 不適切な IntelliJ プロジェクトが生成されます。
より良い解決策のアイデアはありますか? SBT はそのような構造をサポートしていますか?