9

私は SBT を使用して0.12.0います。

私には2つのタスクがあり、次project/Build.scalaのようhelloTasku2定義されています:

val hello = TaskKey[Unit]("hello", "Prints 'Hello World'")

val helloTask = hello := {
  println("Hello World")
}

val u2Task = TaskKey[Unit]("u2") := { println("u2") }

u2タスクを依存させる方法はhellotask? タスク<<=で説明されているように、サンプルに従って使用しました(質問の元のバージョンではhttps://github.com/harrah/xsbt/wiki/Tasksでしたが、ドキュメントは移動および変更されました)。

u2Task <<= u2Task dependsOn helloTask

しかし、私はreassignment to valエラーが発生しました。どうやら、私は何かを働かせることができません<<=。私は何を間違っていますか?

4

2 に答える 2

9

サンプルを厳密にフォローしているとは思えません-これは私にとってはうまくいきます:

  val helloTask = TaskKey[String]("hello")
  val u2Task = TaskKey[Unit]("u2") 

  helloTask := {
    println("Hello World")
    "Hello World"
  }

  u2Task := {println("u2")} 

  u2Task <<= u2Task.dependsOn (helloTask)

正確な理由は、u2Task の定義の型が異なるためです。REPL で確認できます。

scala> val u2Task = TaskKey[Unit]("u2")
u2Task: sbt.TaskKey[Unit] = sbt.TaskKey$$anon$3@101ecc2

scala> val u2Task = TaskKey[Unit]("u2") := {println("u2")}
u2Task: sbt.Project.Setting[sbt.Task[Unit]] = setting(ScopedKey(Scope(This,This,This,This),u2))
于 2012-08-15T08:38:33.637 に答える
2

私はそれを働かせました。<<=and:=演算子を代入演算子と誤解していました。

  val hello = TaskKey[Unit]("hello", "Prints 'Hello World'")

  val helloTask = hello := {
     println("Hello World")
  }

  val u2 = TaskKey[Unit]("u2", "print u2")
  val u2Task = u2 <<= hello map {_ => println("u2")} 

そして結果

> u2
Hello World
u2
于 2012-08-17T04:32:03.763 に答える