这些方法are not described in the documentation。我主要在我的.sbt文件中使用:=
,但有时,由于我还不了解的原因,我用:=
分配的任务不起作用(意味着任务不会产生副作用)效果并且不返回任何内容),并使用<<=
。那么<<=
和:=
之间有什么区别?
编辑:
下面的示例运行清理任务,完成后(doFinally
),同时运行其他两个任务。
gae_prep_war := {
val after = Def.task {
(gae_copyJars).value; (compile in Compile).value;
}
(gae_clean, after) {
(clean, task) => clean doFinally task
}
}
现在它不起作用,没有错误,但也没有效果或输出;如果我将:=
更改为<<=
则可行。我的SBT版本是0.13.0并使用Scala 2.10.2。
EDIT2:
如果我只是将:=
附加到外部表达式,我发现.value
有效:
gae_prep_war := {
val after = Def.task {
(gae_copyJars).value; (compile in Compile).value;
}
(gae_clean, after) {
(clean, task) => clean doFinally task
}
}.value
^
但我仍然不太明白为什么......
答案 0 :(得分:5)
在sbt 0.13中,<<=
已过时。当任务定义引入了对其他任务的依赖时,它被使用 - 它允许您提取其他任务的结果。以下是0.12.4文档:http://www.scala-sbt.org/0.12.4/docs/Getting-Started/More-About-Settings.html#computing-a-value-based-on-other-keys-values
在0.13中,您可以随时使用:=
,因此您可以在此处查看文档在0.13中的变化情况:http://www.scala-sbt.org/0.13.1/docs/Getting-Started/More-About-Settings.html#computing-a-value-based-on-other-keys-values
因此,对于0.13及更高版本,忘记<<=
是安全的。
如果上面的文档链接没有意义,可能有助于回到入门指南的开头并阅读以获得背景。