2012-08-15 13 views
9

estoy usando SBT 0.12.0.¿Cómo hacer que la tarea dependa de otra en sbt 0.12?

tengo dos tareas en mi project/Build.scala-helloTask y u2 define como sigue:

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

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

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

Como hacer u2 tarea depende de hellotask? Solía ​​<<= siguiente la muestra como se describe en Tasks (en la versión original de la pregunta era https://github.com/harrah/xsbt/wiki/Tasks, pero dado que el documento se ha movido y cambiado).

u2Task <<= u2Task dependsOn helloTask 

Pero recibí reassignment to val error. Aparentemente, no puedo obtener nada con <<= para trabajar. ¿Qué estoy haciendo mal?

Respuesta

2

que tengo que trabajar. No he entendido bien los <<= y := operadores como operadores de asignació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")} 

y el resultado

> u2 
Hello World 
u2 
9

no veo que después de la muestra muy de cerca - esto funciona para mí:

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

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

    u2Task := {println("u2")} 

    u2Task <<= u2Task.dependsOn (helloTask) 

La razón precisa es que su definición de u2Task tiene un tipo diferente, se puede ver en el 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

Podría conseguir que funcione?. ¿Podría publicar su archivo de configuración completo? Porque recibí un error (http://pastebin.com/Tw8REnt5). Y aquí está mi archivo de compilación (http://pastebin.com/L5kAW36v). Usé sbt 0.12.0 aquí. –

+0

Esa es una pregunta diferente. Tu definición de construcción me parece extraña, estás agregando una declaración ++ = en medio de las dependencias de la biblioteca. No soy un experto en SSB, pero eso se ve raro. – themel

+0

Funcionó con la definición de mi tarea que utilicé anteriormente. Obtuve este estilo del proyecto scalaz y scala-graph. Por cierto, ¿cómo incluiste sbt en la consola e inspeccionaste? Quiero intentarlo para poder resolver algo. –

Cuestiones relacionadas