На основе доступной документации sbt 0.11.0 ( вики-страница «Общие задачи» и другие) и после того, как я увидел, как это работает. s сделано в сборке Scalaz SBT и в сборке Scalate SBT Я не могу понять, почему мой простой пример не работает:
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)
}
)
)
}
Помещая это в project / 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 в проекте только с «полной конфигурацией» далеко не желательна, по крайней мере, для меня.
Итак, почему этот параметр не работает в полной конфигурации?
Просто скопируйте, вставьте свой код в файл project/Build.scala
и запустите его с sbt run
, и это работает.
Вы уверены, что ваш Build.scala
правильно расположен (должен находиться в каталоге project
)?