2

有使用storeAstriggeredBy例程的 SBT TaskKeys。

有3个部分:

A storeAs B触发由C

我怀疑它就像

存储findManifestPath到任务完成manifestPackageNamemanifestPath

但是为什么我们不能写manifestPackageName <<= findManifestPath呢?

少量样品

manifestPackageName <<= findManifestPath storeAs manifestPackageName triggeredBy manifestPath

或者

multiJvmTestNames <<= multiJvmTests map { _.keys.toSeq } storeAs multiJvmTestNames triggeredBy compile

或者

discoveredMainClasses <<= compile map discoverMainClasses storeAs discoveredMainClasses triggeredBy compile

或者

definedTestNames <<= definedTests map ( _.map(_.name).distinct) storeAs definedTestNames triggeredBy compile
4

1 回答 1

3

storeAs目前实际上只是作为一个内部 API,但它保留了评估任务的结果,以便以后可以检索它。例如,上面的示例被解析器用于制表符补全。您无法在解析期间评估任务,因此这是采用的方法。

triggeredBy是一种安排命令运行的方法,即使它不依赖于任何东西。它主要用于在另一个任务运行时执行副作用。在这种情况下definedTestNames,这可确保名称在test:compile运行时保持不变。

于 2013-05-11T01:52:22.630 回答