【发布时间】:2014-11-28 10:39:33
【问题描述】:
我想要以下 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,然后@987654329 @test 编译取决于两者)。
我找到了一种解决此问题的肮脏方法,方法是替换 dependsOn 使用 unmanagedClasspath 之一,例如:
.settings(unmanagedClasspath in Compile <+= (packageBin in (LocalProject("core"), Compile)))
这感觉像是一种 hack,并且还会使 sbt-idea 生成不正确的 IntelliJ 项目(除其他外)。
有更好的解决方案吗? SBT 是否支持这样的结构?
【问题讨论】:
标签: scala sbt cyclic-dependency