2012-08-15 35 views
9

Tôi đang sử dụng SBT 0.12.0.Làm cách nào để thực hiện tác vụ phụ thuộc vào tác vụ khác trong sbt 0,12?

Tôi đã hai nhiệm vụ trong tôi project/Build.scala-helloTasku2 quy định như sau:

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

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

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

Làm thế nào để làm cho u2 nhiệm vụ phụ thuộc vào hellotask? Tôi đã sử dụng <<= theo mẫu như được mô tả trong Tasks (trong phiên bản gốc của câu hỏi là https://github.com/harrah/xsbt/wiki/Tasks, nhưng tài liệu đã di chuyển và thay đổi).

u2Task <<= u2Task dependsOn helloTask 

Nhưng tôi gặp lỗi reassignment to val. Rõ ràng, tôi không thể nhận được bất cứ điều gì với <<= để làm việc. Tôi đang làm gì sai?

Trả lời

2

tôi đã nhận nó để làm việc. Tôi đã hiểu sai các toán tử <<=:= là toán tử gán.

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")} 

và kết quả

> u2 
Hello World 
u2 
9

Tôi không thấy bạn sau mẫu rất chặt chẽ - điều này làm việc cho tôi:

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

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

    u2Task := {println("u2")} 

    u2Task <<= u2Task.dependsOn (helloTask) 

Lý do chính xác là định nghĩa của bạn về u2Task có một kiểu khác nhau, bạn có thể thấy trong REPL:

scala> val u2Task = TaskKey[Unit]("u2") 
u2Task: sbt.TaskKey[Unit] = [email protected] 

scala> val u2Task = TaskKey[Unit]("u2") := {println("u2")} 
u2Task: sbt.Project.Setting[sbt.Task[Unit]] = setting(ScopedKey(Scope(This,This,This,This),u2)) 
+1

bạn có thể nhận được rằng để làm việc?. Bạn có thể đăng tập tin cấu hình đầy đủ của bạn? Vì tôi gặp lỗi (http://pastebin.com/Tw8REnt5). Và đây là tệp xây dựng của tôi (http://pastebin.com/L5kAW36v). Tôi đã sử dụng sbt 0.12.0 ở đây. –

+0

Đó là một câu hỏi khác. Định nghĩa xây dựng của bạn trông lạ đối với tôi, bạn đang thêm một tuyên bố ++ = ở giữa thư việnDependencies. Tôi không phải là chuyên gia sbt, nhưng điều đó có vẻ lạ. – themel

+0

Nó đã làm việc với định nghĩa nhiệm vụ của tôi mà tôi đã sử dụng trước đây. Tôi đã nhận được phong cách này từ dự án Scalaz và Scala-Graph. Nhân tiện, bạn đã bao gồm sbt trong bảng điều khiển và kiểm tra nó như thế nào? Tôi muốn thử nó để tôi có thể tìm ra thứ gì đó. –

Các vấn đề liên quan