【问题标题】:Difference from `{.}/*:name` and `*/*:name` in sbt?与 sbt 中的 `{.}/*:name` 和 `*/*:name` 的区别?
【发布时间】:2015-01-02 17:57:13
【问题描述】:

从一些 sbt 文档(例如scopes)中,我看到了:

{.}/*:name

entire build中表示name(使用name in ThisBuild定义)

*/*:name

global project中表示name(使用name in Global定义)

(PS:我忽略了配置部分*:

但是,我仍然不知道它们之间有什么区别,它们在我看来完全一样。

我可以用一个而不是另一个做什么吗?

【问题讨论】:

标签: scope sbt global


【解决方案1】:

您在 ThisBuild 中指定的任何版本都将应用于您构建中的所有项目,覆盖可能在 Global 中定义的任何内容。

例如:键“版本”

对于全局范围,它在 Defaults.scala 中定义,值为“0.1-SNAPSHOT”。

对于您在此构建中的项目,您可能希望使用以下内容覆盖它:

version in ThisBuild := "3.0.1"

所以,因为 [{.}/*:version] 优先于 [*/*:version],所以每当您在项目中获取“版本”时,您都会获取“3.0.1”而不是“0.1-SNAPSHOT” .

这几乎解释了差异以及如何使用一个而不是另一个。

【讨论】:

  • 所以Global 的范围比ThisBuild 更大,因为它可以是不同构建的默认值(例如,在 sbt 中或在 sbt 插件中定义),但 ThisBuild 只是参考当前构建,并且可以覆盖全局默认值?
  • 为什么要在 Global 和 ThisBuild 中使用不同的值?
  • 我也很难理解这一点,但是一旦提到插件可以在全局范围内定义一些设置,我就更清楚了。除了插件,我没有看到任何使用 Global vs ThisBuild 的用例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 2019-03-19
  • 1970-01-01
相关资源
最近更新 更多