Jef*_*eff 17 scala sbt sbt-native-packager
sbt的文档似乎在这里真的缺乏,所以我想对此得到一个明确的答案:"+ =","++ =","<+ =","<++之间的区别是什么?在Keys上操作时,""和"<< ="?
lpi*_*ora 27
你找不到文档,因为@JacekLaskowski正确地指出除了和之外的所有运算符+=
,++=
并且:=
已被弃用.
但是,如果切换到旧版本的sbt,则可以找到文档.
如果您坚持使用旧版本,这是他们的意思(通过文档):
+=
和++=
附加到先前的值,其中第一附加单个元件和下附加一个Seq
~=
转换值,例如,您希望使用存储在设置中的值来获取新设置.<<=
取决于另一个键,例如,如果您调用organization <<= name
,则organization
value等于name
value.您可以依赖多个值,例如organization <<= (name, version) { (n, v) => /* do something with values */ }
<+=
并<++=
正在与依赖附加,如追加,但你可以使用其他的设置值来计算新值说,@ JacekLaskowski是对的,如果你使用sbt 13.x或更高版本,你不应该使用这些运算符来支持宏.
引用任务 v. 设置键:
TaskKey[T]
据说A定义了一个任务。sbt 的描述项目的映射可以保留一个固定的字符串值,例如设置
name
,但它必须保留一些用于任务的可执行代码,例如compile
- 即使该可执行代码最终返回一个字符串,它也必须重新 -每次都跑。给定的键总是指任务或普通设置。也就是说,“taskiness”(是否每次重新运行)是键的属性,而不是值。
换句话说,设置是不可变的,并在构建启动时初始化(类似于val
Scala 中的 s),而每次调用任务时都会执行任务(类似于def
Scala 中的 s)。
引用定义任务和设置:
使用
:=
,您可以为设置分配值并为任务分配计算。对于设置,该值将在项目加载时计算一次。对于任务,每次执行任务时都会重新运行计算。
赋值 with
:=
是最简单的转换,但键也有其他方法。如果T
inSettingKey[T]
是一个序列,即键的值类型是一个序列,您可以附加到该序列而不是替换它。
+=
将单个元素附加到序列中。++=
将连接另一个序列。
总结一下,你应该只关心:=
(assignment macro), +=
(append macro) 和++=
(concatenation macro)。其余的,即<<=
,<+=
和<++=
,不再推荐用于常见用例。
事实上,所有操作都可以用简单的赋值宏来表达:=
(解释即将出版的SBT in Action一书)。
你真的确定,这些文档“真的很缺乏”?!我怀疑。
归档时间: |
|
查看次数: |
2212 次 |
最近记录: |