sbt究竟如何计算出任务名称?

时间:2015-08-04 09:52:36

标签: scala sbt

假设在build.sbt

中有类似的内容
val printMessage = taskKey[Unit]("Simple task")

printMessage := {
    println("Hello")
}

sbt如何确定此任务被称为printMessage,并且当没有包含该文本的字符串时,它在CLI中可用?我会理解代码是否类似于val printMessage = taskKey[Unit]("printMessage", "description"),但这真让我感到困惑

1 个答案:

答案 0 :(得分:4)

SBT有macrosbt.std.KeyMacro.taskKeyImpl,其中String描述并从定义的val名称中推断出任务名称。

此宏在sbt包对象中为aliasedtaskKey[T]

因此,当您致电taskKey[Unit]("SimpleTask")时,会将其展开为找到val printMessage的宏,并使用它来推断任务键的名称。