SBT TaskKeys使用storeAs
和triggeredBy
例程。
共有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
答案 0 :(得分:3)
storeAs
目前仅用作内部API,但它会持续评估任务的结果,以便以后可以检索它。例如,上面的示例由解析器用于制表符完成。您无法在解析过程中评估任务,因此这是采用的方法。
triggeredBy
是一种安排命令运行的方法,即使它不是任何依赖项。它主要用于在另一个任务运行时执行副作用。在definedTestNames
的情况下,这可以确保在test:compile
运行时持久保存名称。