无法从“完整配置”生成SBT 0.11的源代码

时间:2011-10-05 11:07:05

标签: scala code-generation sbt

基于可用的sbt 0.11.0文档("Common Tasks" wiki page和其他人),在Scalaz SBT buildScalate 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文件是不可取的,至少对我来说是这样。

那么,为什么这个设置在完整配置中不起作用?

1 个答案:

答案 0 :(得分:2)

只需将代码复制粘贴到文件project/Build.scala中,然后使用sbt run运行即可。

您确定Build.scala位置正确(必须位于project目录中)吗?