2011-10-05 10 views
26

Sulla base della documentazione 0.11.0 di sbt disponibile ("Common Tasks" wiki page e altri) e dopo aver visto come viene eseguito in Scalaz SBT build e in Scalate SBT build non riesco a capire perché il mio semplice esempio non funziona:Impossibile generare il codice sorgente con SBT 0.11 da "Configurazione completa"

import sbt._ 
import Keys._ 

object MyBuild extends Build { 

    lazy val project = Project(
    id = "root", 
    base = file("."), 
    settings = Defaults.defaultSettings ++ Seq(
     (sourceGenerators in Compile) <+= (sourceManaged in Compile) map { dir => 
     val file = dir/"bla.scala" 
     IO.write(file, """object Bla extends App { println("bla!") }""") 
     Seq(file) 
     } 
    ) 
) 

} 

Mettere che il progetto/build.scala di un progetto vuoto e l'esecuzione di "SBT compilazione" genera/compila nulla e "run SBT" lamenta che non riesce a trovare alcuna classe principale.

Ora, se inserisco l'impostazione nella "configurazione rapida" build.sbt come segue invece della configurazione completa come sopra, funziona.

(sourceGenerators in Compile) <+= (sourceManaged in Compile) map { dir => 
    val file = dir/"bla.scala" 
    IO.write(file, """object Bla extends App { println("bla!") }""") 
    Seq(file) 
} 

Ovviamente, la necessità di creare un file build.sbt in un progetto -solo "configurazione completa" è tutt'altro che auspicabile, almeno per me.

Quindi, perché questa impostazione non funziona nella configurazione completa?

+0

Ho copiato e incollato quanto sopra in project/Build.scala, eseguito 'sbt run' e stampato bla! come previsto. Forse controlla che il nome del file sia corretto e che la definizione venga caricata lanciando un println nell'oggetto o modificando un'impostazione e verificandone l'effetto. –

+0

'project/build.scala' fallisce dove' project/Build.scala' ha successo? – earldouglas

+0

questo ragazzo merita un enorme voto negativo per mantenere la risposta non accettata per un anno. lasciami essere il primo :) –

risposta

2

Basta copiare incollare il codice nel file project/Build.scala ed eseguirlo con sbt run e funziona.

Siete sicuri che il vostro Build.scala sia posizionato correttamente (deve essere nella directory project)?

Problemi correlati