基于可用的sbt 0.11.0文档("Common Tasks" wiki page和其他人),在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)
}
)
)
}
将它放在一个空项目的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文件是不可取的,至少对我来说是这样。
那么,为什么这个设置在完整配置中不起作用?
答案 0 :(得分:2)
只需将代码复制粘贴到文件project/Build.scala
中,然后使用sbt run
运行即可。
您确定Build.scala
位置正确(必须位于project
目录中)吗?