scala code-generation sbt

scala - No se puede generar código fuente con SBT 0.11 desde "Configuración completa"



code-generation (1)

Basado en la documentación sbt 0.11.0 disponible ( página de wiki de "Tareas comunes" y otras) y después de ver cómo se hace esto en la compilación de Scalaz SBT y en la compilación de Scalate SBT no puedo entender por qué mi simple ejemplo no funciona:

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) } ) ) }

Poner eso en project / build.scala de un proyecto vacío y ejecutar "sbt compile" no genera / compila nada y "sbt run" se queja de que no puede encontrar ninguna clase principal.

Ahora, si pongo la configuración en la "configuración rápida" build.sbt de la siguiente manera en lugar de la configuración completa como anteriormente, simplemente funciona.

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

Obviamente, la necesidad de crear un archivo build.sbt en un proyecto de "configuración completa" solo está lejos de ser deseable, al menos para mí.

Entonces, ¿por qué esta configuración no funciona en la configuración completa?


Simplemente copie el código en el archivo project/Build.scala y ejecútelo con sbt run y eso funciona.

¿Está seguro de que su Build.scala está ubicado correctamente (debe estar en el directorio del project )?