storeAs ... triggerBy如何在简单构建工具中工作?

时间:2012-08-15 18:58:10

标签: scala sbt

SBT TaskKeys使用storeAstriggeredBy例程。

共有3个部分:

A storeAs B triggeredBy C

我怀疑它就像

findManifestPath任务完成时

manifestPackageName存储到manifestPath

但为什么我们不能写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

1 个答案:

答案 0 :(得分:3)

storeAs目前仅用作内部API,但它会持续评估任务的结果,以便以后可以检索它。例如,上面的示例由解析器用于制表符完成。您无法在解析过程中评估任务,因此这是采用的方法。

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