文档中未描述这些方法.我主要使用:=我的.sbt文件,但有时候,由于我还不了解的原因,我指定的:=任务不起作用(意味着任务不会产生副作用而且不会返回任何内容),以及与...合作<<=.那么<<=和之间的区别是:=什么?
编辑:
我的下面的例子运行一个清理任务,当它完成时(doFinally),同时运行另外两个任务.
gae_prep_war := {
val after = Def.task {
(gae_copyJars).value; (compile in Compile).value;
}
(gae_clean, after) {
(clean, task) => clean doFinally task
}
}
Run Code Online (Sandbox Code Playgroud)
因为它现在不起作用,没有错误,但也没有效果或输出; 如果我改变:=到<<=它的工作原理.我的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
^
Run Code Online (Sandbox Code Playgroud)
但我还是不太明白为什么......
在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-其他密钥值
在0.13中你可以随时使用:=,所以你可以在这里看到文档如何在0.13中改变:http://www.scala-sbt.org/0.13.1/docs/Getting-Started/More-About-Settings.html#计算的一个值,基于上其他密钥值
因此,对于0.13及以上,可以安全地忘记<<=.
如果上面的文档链接没有意义,可能有助于回到入门指南的开头并阅读以获得背景.
| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |