簡體   English   中英

SBT,<< =和:=之間的區別

[英]SBT, difference between <<= and :=

文檔中未描述這些方法。 我主要使用:=在我的.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

  ^

但我還是不太明白為什么......

在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中你可以使用:= always,所以你可以在這里看到文檔如何在0.13中改變: http//www.scala-sbt.org/0.13.1/docs/Getting-Started/More-About-Settings。 HTML#計算的一個值,基於上其他密鑰值

因此,對於0.13及以上,可以安全地忘記<<=

如果上面的文檔鏈接沒有意義,可能有助於回到入門指南的開頭並閱讀以獲得背景。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM