项目中的 build.sbt
中发现定义任务时有 task2 <<= task1 map {...}
这样任务依赖的写法, 这个 <<=
方法有点晦涩难懂, 读过 sbt in action
之后才知道这是 sbt 0.12 或之前的做法, sbt 0.13 之后不这么用了, 直接访问下 task1.value 就行, 因此前面可改写为 task2 := {task1.value; ...}
, 这也使得定义任务依赖时与普通任务一致风格了. 新的写法得益于 Scala 2.10 的宏特性, 后面还会讲到.
对于依赖于多个任务的情况, 在 sbt 0.13 前面分别是这样的, 假定有三个 Task(task1, task2, 和 task3)
val task1 = taskKey[Int]("task 1")
val task2 = taskKey[Int]("task 2")
val task3 = taskKey[Int]("task 3")
如果 task3 依赖于 task1 和 task 2
sbt 0.13 前后版本中的写法分别是
像任务的 .value
属性其实是一个宏定义, 源码 阅读全文 >>