我正在尝试生成一些来源,如生成文件中所描述的。
当我将以下内容放入我的build.sbt中时,一切都正常:
sourceGenerators in Compile += Def.task {
val file = (sourceManaged in Compile).value / "demo" / "Test.scala"
IO.write(file, """object Test extends App { println("Hi") }""")
Seq(file)
}.taskValue但是,当我试图在插件中做同样的事情时,任务从未运行过:
object MyPlugin extends AutoPlugin {
override lazy val projectSettings = Seq(
sourceGenerators in Compile += Def.task {
val file = (sourceManaged in Compile).value / "demo" / "Test.scala"
IO.write(file, """object Test extends App { println("Hi") }""")
Seq(file)
}.taskValue
)
}我放在插件中的其他东西似乎都很好,但是源文件从来没有生成过。
我错过了什么重要的事情吗?
发布于 2014-07-13 16:18:28
您必须在JvmPlugin之后加载插件,该插件在projectSettings中重置sourceGenerators (参见sbt.Defaults.sourceConfigPaths)。
您可以通过将它添加到插件中作为一个需求来实现。
override def requires = JvmPlugin完整的示例如下所示:
import sbt._
import Keys._
import plugins._
object MyPlugin extends AutoPlugin {
override def requires = JvmPlugin
override lazy val projectSettings = Seq(
sourceGenerators in Compile += Def.task {
val file = (sourceManaged in Compile).value / "demo" / "Test.scala"
IO.write(file, """object Test extends App { println("Hi") }""")
Seq(file)
}.taskValue
)
}https://stackoverflow.com/questions/24724406
复制相似问题