2012-05-02 21 views
7

Tengo un proyecto de compilador scala. Algunos de los casos de prueba dependen del archivo jar generado. Por lo tanto, siempre ejecuto manualmente la tarea "paquete" antes de ejecutar la "prueba" . tareaCómo ejecutar "paquete" antes de "prueba"

¿Cómo puedo añadir una tarea SBT que va a hacer el trabajo de "prueba", pero dependerá de "paquete"

Respuesta

7

SBT 0.12:?

Añadir lo siguiente a la configuración del proyecto :

(test in Test) <<= (test in Test) dependsOn (Keys.`package` in Compile) 

Esto cambia la tarea de prueba para su proyecto. Pero también se puede definir su propia tarea:

val myTestTask = TaskKey[Unit]("my-test-task", "runs package and then test") 

Y a continuación, añadir esto a la configuración del proyecto:

myTestTask <<= (test in Test) dependsOn (Keys.`package` in Compile) 

SBT 0,13:

Añadir lo siguiente a la configuración del proyecto:

(test in Test) := { 
    (Keys.`package` in Compile).value 
    (test in Test).value 
} 

Esto cambia la tarea de prueba para usted tu proyecto. Pero también se puede definir su propia tarea:

val myTestTask = taskKey[Unit]("runs package and then test") 

Y a continuación, añadir esto a la configuración del proyecto:

myTestTask := { 
    (Keys.`package` in Compile).value 
    (test in Test).value 
} 
+0

que estoy consiguiendo error siguiente 'build.sbt: 21: error: paquete de EF se esperaba, pero ' 'encontrado. '(prueba en prueba) << = (prueba en prueba) depende del paquete' – dips

+1

tuve que cambiarlo a' (prueba en prueba) << = (prueba en prueba) dependsOn (claves. \ 'paquete \' en Compilar) '. ¿Es esta la manera habitual, o algo peculiar de mi configuración? Tenga en cuenta que al omitir 'Llaves' me da un error' la referencia al paquete es ambigua. se importa dos veces en el mismo ámbito, importe Keys._ e importe sbt._' – dips

+2

@dips Es un desafortunado conflicto con la palabra clave 'paquete' de Scala. –

Cuestiones relacionadas