6
使用SBT对相互依存的项目,我想有以下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
中的域对象和其他类/ utils。
对于此设置SBT给出了Cyclic reference
错误,虽然不是一个真正的循环依赖,因为使用不同配置(core
编译,然后testkit
汇编取决于core
,然后core
test
取决于两个编译)。
我发现了一个肮脏的方式通过更换dependsOn
使用unmanagedClasspath
之一来解决这个问题,例如:
.settings(unmanagedClasspath in Compile <+= (packageBin in (LocalProject("core"), Compile)))
这感觉就像一个黑客,也使sbt-idea
产生不正确的IntelliJ项目(其他中事情)。
更好的解决方案的任何想法? SBT是否支持这种结构?