我想要以下 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因此实际上并没有循环依赖。coretestkitcorecore test
我找到了一种通过替换其中一个dependsOnuse来解决此问题的肮脏方法unmanagedClasspath,例如:
.settings(unmanagedClasspath in Compile <+= (packageBin in (LocalProject("core"), Compile)))
这感觉像是一种 hack,并且还会sbt-idea生成不正确的 IntelliJ 项目(除其他外)。
有更好的解决方案的想法吗?SBT 是否支持这样的结构?