无法从“完整配置”生成带有 SBT 0.11 的源代码
Posted
技术标签:
【中文标题】无法从“完整配置”生成带有 SBT 0.11 的源代码【英文标题】:Can not generate source code with SBT 0.11 from "Full Configuration" 【发布时间】:2011-12-01 09:35:37 【问题描述】:根据可用的 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 文件是不可取的,至少对我来说是这样。
那么,为什么这个设置在完整配置中不起作用?
【问题讨论】:
我将上面的内容复制并粘贴到 project/Build.scala 中,运行“sbt run”,它打印了 bla!正如预期的那样。或许可以通过在对象中添加 println 或更改设置并验证它是否生效来检查文件名是否正确以及定义是否正在加载。project/build.scala
在project/Build.scala
成功的地方失败了吗?
这个人值得一票否决,因为他的答案一年不被接受。让我成为第一个 :)
【参考方案1】:
只需将您的代码复制粘贴到文件project/Build.scala
并使用sbt run
运行它即可。
您确定您的Build.scala
位置正确(必须在project
目录中)吗?
【讨论】:
以上是关于无法从“完整配置”生成带有 SBT 0.11 的源代码的主要内容,如果未能解决你的问题,请参考以下文章