2013-04-25 11 views
12

devo attività personalizzate nella mia (0.12.2) del progetto SBT. Chiamiamoli a, b e c. Così, quando sono in modalità interattiva di SBT posso basta digitare a e viene eseguita l'attività associata a. Posso anche digitare ;a;b;c e le tre attività sono eseguite in sequenza; allo stesso modo, qualcosa come ;clean;compile farebbe. Quello che posso fare anche dalla shell interattiva è creare un alias per eseguirli tutti: alias all=;a;b;c. Ora quando digito all le attività vengono eseguite in modo ovvio. Quello che sto cercando di ottenere è creare questo alias all'interno della configurazione SBT per il mio progetto.Come alias una sequenza di attività?

This section di offerte di documentazione SBT con compiti, ma tutto quello che ho potuto realizzare è stato qualcosa di simile:

lazy val a = TaskKey[Unit]("a", "does a") 
lazy val b = TaskKey[Unit]("b", "does b") 
lazy val c = TaskKey[Unit]("c", "does c") 
lazy val all = TaskKey[Unit]("all", ";a;b;c") 

lazy val taskSettings = Seq(
    all <<= Seq(a,b,c).dependOn 
) 

Il problema che ho con questo approccio è che i compiti sono combinati e quindi la loro esecuzione avviene in parallelo in contrasto con sequenziale, che è quello che sto cercando di ottenere. Quindi, come posso creare un alias come alias all=;a;b;c all'interno del file di configurazione SBT?

risposta

20

ho cercato la stessa cosa e ho trovato this request di un modo semplice di aliasing e the commit che fornisce uno: addCommandAlias.

Nel mio build.sbt ora ho:

addCommandAlias("go", ";container:start;~copy-resources") 

Come si può intuire, la scrittura go nella console verrà ora eseguito la sequenza di comandi più per me.

+1

Sì, aggiungeranno un bel po 'di cose interessanti in 0.13. Probabilmente non avrai più bisogno della configurazione completa al momento del rilascio. – agilesteel

+0

Huh, non ho nemmeno notato il tag della versione. Funziona per me in 0.12.1. :) – lime

9

ho calcolato fuori:

lazy val taskSettings = Seq(
    all <<= c dependsOn (b dependsOn a) 
) 
+0

Mi chiedo perché fare tutto questo "DependsOn" -thing dato che la sequenza è definita già "a; b; c" o perché definire "; a; b; c" se 'c DependsOn (B DependsOn a)' è impostato a – ses

6

un altro modo per raggiungere questo obiettivo è quello di definire un alias nel file .sbtrc che sarà nella radice della directory del progetto.

alias all=;a;b;c 

Hai anche l'opzione aggiuntiva di definire questi .sbtrc file nella vostra home directory, nel qual caso questo alias sarà disponibile per tutti i vostri progetti.

+1

È fantastico. Non lo sapevo. Grazie. – agilesteel

Problemi correlati