2014-10-23 14 views
9

Sto tentando di eseguire un'attività personalizzata prima della compilazione di un'applicazione Play 2.3. Ho questo nel mio build.sbt di file:Come evitare che attivatore esegua l'attività di compilazione due volte quando accede alla pagina di riproduzione?

lazy val helloTask = TaskKey[Unit]("hello", "hello") 

helloTask := { 
    println("hello test") 
} 

(compile in Compile) <<= (compile in Compile) dependsOn helloTask 

Quando eseguo activator ~run e quindi aprire una pagina nel browser, ricevo il seguente output:

C:\Development\test>activator ~run 
[info] Loading project definition from C:\Development\test\project 
[info] Set current project to play (in build file:/C:/Development/test/) 

--- (Running the application from SBT, auto-reloading is enabled) --- 

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 

(Server started, use Ctrl+D to stop and go back to the console...) 

hello test 
[success] Compiled in 418ms 
hello test 
hello test 
[info] play - Application started (Dev) 

Sembra che il mio compito personalizzato è in esecuzione per tre volte . C'è un modo per evitarlo?

+0

Interessante. Sembra che il caricamento di una pagina inneschi 'compile' due volte. [Segnalerei un problema] (https://github.com/playframework/playframework/issues). –

+0

BTW, utilizzare la versione più breve 'taskKey' per definire una nuova attività -' lazy val hello = taskKey [Unità] ("My custom hello task") '. –

+0

Alla fine .... Il. La nuova versione potrebbe risolvere questo problema – jsuereth

risposta

3

Ho avuto lo stesso problema e ho trovato la soluzione.

In Sbt avete tre Scopes by configuration axis:

  • Compile che definisce la build principale (src/main/Scala).
  • Test che definisce come compilare i test (src/test/scala).
  • Runtime che definisce il percorso di classe per l'attività di esecuzione.

È necessario utilizzare Runtime invece di Compile. Dovrebbe apparire così:

lazy val helloTask = taskKey[Unit]("hello") 

helloTask := println("hello test") 

(compile in Runtime) <<= (compile in Runtime) dependsOn helloTask 
Problemi correlati