我想将模块依赖项与父模块的依赖项结合起来。
我的build.sc
中有以下内容:
trait ExampleModule extends ModuleWithTests {
override def moduleDeps = Seq(camunda, cli)
}
object twitter extends ExampleModule {
override def moduleDeps = super.moduleDeps ++ Seq(twitterApi)
}
这给了我:
build.sc:222: type mismatch;
found : Seq[build.this.ModuleWithTests]
required: Seq[build.this.ModuleWithTests{def moduleDeps: Seq[build.this.ModuleWithTests]}]
override def moduleDeps = super.moduleDeps ++ Seq(twitterApi)
^
build.sc:222: `T.command` definitions must have 1 parameter list
override def moduleDeps = super.moduleDeps ++ Seq(twitterApi)
^
Compilation Failed
有没有办法做到这一点,或者我必须列出每个子模块中的模块依赖关系?
您的示例几乎是正确的,但由于您省略了ExampleModule.moduleDeps
的显式返回类型,因此在这种情况下,编译器似乎推断出了更具体的Seq[ModuleWithTests]
类型。看起来您的所有模块camunda
和cli
也实现了这个特性。而twitterApi
似乎没有实现它。
要修复编译错误,可以尝试将显式返回类型Seq[JavaModule]
添加到ExampleModule.moduleDeps
。