如何在sbt插件中覆盖正确的任务?

时间:2018-11-16 00:34:44

标签: scala sbt

有人可以向我解释给定scope的{​​{1}}和configuration是什么,而没有指定使用它们吗?

task

似乎> show libraryDependencies [info] * org.scala-lang:scala-library:2.11.12 > show {.}/ *:libraryDependencies [info] * > show {.}/libraryDependencies [info] * > show */ *:libraryDependencies [info] * > show *:libraryDependencies [info] * org.scala-lang:scala-library:2.11.12 等于*:libraryDependencies。那是对的吗 ?

因此,在插件代码中,您需要覆盖libraryDependencies而不是projectSettingsglobalSettings,对吗?

然后您不使用任何buildSettings,这意味着Configuration调用中没有任何内容,对吗?

1 个答案:

答案 0 :(得分:0)

这在官方文档中已有详细说明。您正在寻找的是scope delegation的规则,基本上就是SBT在引用任务和设置时如何解析它们的方法,但是它们没有使用特定的轴配置进行定义。

简而言之,当您仅编写someKey时,它将被解释为<current project> / <key-dependent configuration> / Zero / someKey,这意味着它的作用域是shell中的当前项目,取决于键本身的配置以及{{ 1}}任务范围。如果没有为此特定范围中的键分配任何值,则使用范围委派来查找定义(如果存在的话)。

请注意,Zero语法是0.13和SBT早期版本的遗留物,不再建议使用。使用统一的斜杠语法-文档中的所有示例都使用它,并且通常比旧语法更易于阅读和理解。