裸线本身有什么作用?

What does a bare line on its own do?

在 .sbt 文件中,我经常从自述文件中复制粘贴行,但我不知道我实际上在做什么。一个例子是,在将 sbt-revolver 添加到 plugins.sbt 之后,写入行

Revolver.settings

我目前对此的理解是神奇地将 re-startre-stop 命令添加到 sbt。我被引导理解 .sbt 文件中的一行实际上并没有执行魔术,而是创建了一个键并将一个值与之关联。

这样一行设置了哪些键,值是多少? .scala 构建定义中的等效语句是什么?

*.sbt 文件可以包含 DslEntry,其中包括 Setting[T]Seq[Setting[T]].

someString := "a"someSeq += "b" 这样的表达式是特定 T 类型的 Setting

虽然这些设置是值,但它们定义了构建的不同部分的转换(更改、添加、附加等),这些部分被折叠到构建状态和结构中。

在您的示例中 Revolver.settingsSeq[Setting[_]],它定义了使用 sbt-revolver.

的默认设置

如果在 project/*.scala 中设置它,您需要将其分配给根项目,即:

  • 您构建中的唯一项目
  • 聚合所有其他(子)项目的项目。

因此它看起来像:

import sbt._, Keys._

object Build extends Build {
  val bippy = project in file(".") settings Revolver.settings
}