如何将模块依赖关系与其父模块的依赖关系与 Mill 结合起来

How to combine the Module Dependencies with the Dependencies of its parent Module with Mill

我想将模块依赖项与父模块的依赖项结合起来。

我的 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 的显式 return 类型,在这种情况下编译器似乎推断出更具体的 Seq[ModuleWithTests] 类型。看起来你的所有模块 camundacli 也都实现了这个特性。而 twitterApi 似乎没有实现它。

要修复编译错误,您可以尝试将显式 return 类型 Seq[JavaModule] 添加到 ExampleModule.moduleDeps