Sbt (3) Tasks
1. Defining a Task:
編輯 build.sbt,並在裡面定義 task:
$ vim build.sbt
在 build.sbt 加入下面的程式:
lazy val intTask = taskKey[Int]("An int task") intTask := { printf("val: %d\n", 1+2) 1 + 2 }
我們先宣告一個 taskKey 物件,它會回傳 Int (正確來說是任務回傳 Int,它本身是個 template),緊跟著的字串是註解用。 我們再用 := 定義函數的部份。
使用 sbt 執行 intTask:
$ sbt intTask
2. .value:
這次我們把 build.sbt 修改一下:
lazy val intTask = taskKey[Int]("An int task") intTask := { printf("val(intTask): %d\n", 1+2) 1 + 2 } lazy val stringTask = taskKey[String]("An string task") stringTask := { val res = s"val(stringTask): ${intTask.value}" println(res) res }
執行 stringTask:
$ sbt stringTask ... val(intTask): 3 val(stringTask): 3
我們發現在執行 stringTask 時我們呼叫了 intTask.value 所以 intTask 也被執行了,會先印出 intTask 再印出 stringTask 的字串。 另外我們還發現透過 intTask.value 我們能取得該任務的回傳值。
3. Task Scope:
我們還可以指定使用不同 scopes 的 task。
stringTask in Test := "val: " + (intTask in Compile).value
留言
張貼留言