我正在尝试生成一些源,如生成文件中所述.
当我把以下内容放入我的时候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
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在插件中执行相同的操作时,任务永远不会运行:
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
)
}
Run Code Online (Sandbox Code Playgroud)
我放入插件的其他所有内容似乎都运行正常,但源文件永远不会生成.
我错过了重要的事吗?
lpi*_*ora 22
你必须加载后您的插件JvmPlugin,其复位sourceGenerators中projectSettings(见sbt.Defaults.sourceConfigPaths).
您可以通过将其添加为插件的要求来实现,例如
override def requires = JvmPlugin
Run Code Online (Sandbox Code Playgroud)
您的完整示例应如下所示:
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
)
}
Run Code Online (Sandbox Code Playgroud)