我想要以下 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来解决此问题的肮脏方法unmanagedClasspath
,例如:
.settings(unmanagedClasspath in Compile <+= (packageBin in (LocalProject("core"), Compile)))
这感觉像是一种 hack,并且还会sbt-idea
生成不正确的 IntelliJ 项目(除其他外)。
有更好的解决方案的想法吗?SBT 是否支持这样的结构?