裸线本身有什么作用?
What does a bare line on its own do?
在 .sbt 文件中,我经常从自述文件中复制粘贴行,但我不知道我实际上在做什么。一个例子是,在将 sbt-revolver 添加到 plugins.sbt 之后,写入行
Revolver.settings
我目前对此的理解是神奇地将 re-start
和 re-stop
命令添加到 sbt。我被引导理解 .sbt 文件中的一行实际上并没有执行魔术,而是创建了一个键并将一个值与之关联。
这样一行设置了哪些键,值是多少? .scala 构建定义中的等效语句是什么?
*.sbt
文件可以包含 DslEntry,其中包括 Setting[T]
和 Seq[Setting[T]]
.
像 someString := "a"
或 someSeq += "b"
这样的表达式是特定 T
类型的 Setting
。
虽然这些设置是值,但它们定义了构建的不同部分的转换(更改、添加、附加等),这些部分被折叠到构建状态和结构中。
在您的示例中 Revolver.settings
是 Seq[Setting[_]]
,它定义了使用 sbt-revolver
.
的默认设置
如果在 project/*.scala
中设置它,您需要将其分配给根项目,即:
- 您构建中的唯一项目
- 聚合所有其他(子)项目的项目。
因此它看起来像:
import sbt._, Keys._
object Build extends Build {
val bippy = project in file(".") settings Revolver.settings
}
在 .sbt 文件中,我经常从自述文件中复制粘贴行,但我不知道我实际上在做什么。一个例子是,在将 sbt-revolver 添加到 plugins.sbt 之后,写入行
Revolver.settings
我目前对此的理解是神奇地将 re-start
和 re-stop
命令添加到 sbt。我被引导理解 .sbt 文件中的一行实际上并没有执行魔术,而是创建了一个键并将一个值与之关联。
这样一行设置了哪些键,值是多少? .scala 构建定义中的等效语句是什么?
*.sbt
文件可以包含 DslEntry,其中包括 Setting[T]
和 Seq[Setting[T]]
.
像 someString := "a"
或 someSeq += "b"
这样的表达式是特定 T
类型的 Setting
。
虽然这些设置是值,但它们定义了构建的不同部分的转换(更改、添加、附加等),这些部分被折叠到构建状态和结构中。
在您的示例中 Revolver.settings
是 Seq[Setting[_]]
,它定义了使用 sbt-revolver
.
如果在 project/*.scala
中设置它,您需要将其分配给根项目,即:
- 您构建中的唯一项目
- 聚合所有其他(子)项目的项目。
因此它看起来像:
import sbt._, Keys._
object Build extends Build {
val bippy = project in file(".") settings Revolver.settings
}