【问题标题】:How to override libraryDependencies in a sbt plugin?如何覆盖 sbt 插件中的 libraryDependencies?
【发布时间】:2018-12-17 11:59:53
【问题描述】:

如何覆盖 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

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

有人有解决办法吗?谢谢 !

【问题讨论】:

  • 你能澄清一下你所说的“覆盖”是什么意思吗?就像构建用户添加了一些库 X 1.0,而您想删除它并添加 Y 1.0 代替?

标签: scala sbt


【解决方案1】:

所以我明白我的问题出在哪里。 我没有正确理解 settingstasks 是如何一起工作的。

settings 仅在sbt 启动时评估一次。

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

所以你不能像这样读取然后重写settings

太复杂了,我什至wrote a whole article about it

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2016-01-13
    • 2014-06-10
    • 2021-01-06
    相关资源
    最近更新 更多