如何在SBT插件中覆盖libraryDependencies?

时间:2018-11-15 05:18:16

标签: scala sbt

一个人将如何覆盖libraryDependencies? 我尝试过:

  Keys.libraryDependencies in Compile := {
    val libraryDependencies = (Keys.libraryDependencies in Compile).value
    val allLibraries = UpdateDependencies(libraryDependencies)
    allLibraries
  }

这样似乎可行,当我添加打印语句时,allLibraries是正确的。

但是,在接下来的步骤中,它似乎没有正确的值:

  Keys.update in Compile := Def.taskDyn {
    val u = (Keys.update in Compile).value

    Def.task {
      val allModules= u.configurations.flatMap(_.allModules)
      log.info(s"Read ${allModules.size} modules:")
      u
    }
  }.value

print语句只有几个模块,而不是我在上一步中添加的所有模块。

有人解决吗?谢谢 !

1 个答案:

答案 0 :(得分:0)

所以我知道我的问题在哪里。 我无法正确理解settingstasks的合作方式。

settings仅在sbt开始时评估一次。

tasks仅在sbt启动需要它的任务/命令时被评估一次。

因此,您无法像这样读取并重写settings

这是如此令人费解,我什至wrote a whole article about it