На основе доступной документации sbt 0.11.0 ( "Общие задачи" ) и других) и после просмотра, как это делается в Scalaz SBT build и Scalate SBT build Я не могу понять, почему мой простой пример не работает:
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)
}
)
)
}
Полагая это на проект /build.scala пустого проекта и запуская "sbt compile", ничего не генерирует/компилирует, а "sbt run" жалуется, что не может найти какой-либо основной класс.
Теперь, если я поместил параметр в "быструю конфигурацию" build.sbt следующим образом вместо полной конфигурации, как указано выше, он просто работает.
(sourceGenerators in Compile) <+= (sourceManaged in Compile) map { dir =>
val file = dir / "bla.scala"
IO.write(file, """object Bla extends App { println("bla!") }""")
Seq(file)
}
Очевидно, что создание файла build.sbt в "полной конфигурации" - только проект далеко не желателен, по крайней мере для меня.
Итак, почему этот параметр не работает в полной конфигурации?