1

这个问题与我的烦恼有关,sbt-scapegoat但我想在全球范围内了解这件事。

因此,sbt-scapegoat定义了一个设置scapegoatVersion和配置scapegoat此处提供简短而完整的源代码。

当我设置scapegoatVersion in ThisBuild := "1.3.0"它被忽略:

> scapegoat:scapegoatVersion
[info] frontend/scapegoat:scapegoatVersion
[info]  1.0.0
[info] backend/scapegoat:scapegoatVersion
[info]  1.0.0
[info] {.}/scapegoat:scapegoatVersion
[info]  1.3.0

我理解是这样,因为scapegoatVersion := "1.0.0"autoImport对象中为每个项目导入,并且这样的设置比scapegoatVersion in ThisBuild覆盖它更精确。

我的问题是:如何在插件中定义这样的默认值以允许使用ThisBuildor进行全局覆盖Global

@edit: 我发现version设置 iDefaults.scala是使用:==而不是:=. 这是我要找的把戏吗?遗憾的是,它没有记录在案,而且它是私有的sbt

4

1 回答 1

0

我认为通过将其scapegoatVersion应用于ThisBuild您仅将其设置为“父项目”(也标识为{.})。

从您粘贴的日志看来,您有 2 个子模块,默认scapegoatVersion仍然适用。

您是否尝试过在一些 commonSettings 变量中定义版本并将其应用于子模块?类似于以下内容:

lazy val commonSettings = Seq(
  scapegoatVersion := "1.3.0"
)

lazy val backend = (project in file("backend"))
  .settings(commonSettings: _*)
  ...

lazy val frontend = (project in file("frontend"))
  .settings(commonSettings: _*)
  ...
于 2016-12-22T22:07:50.557 回答