Scala 在SBT中保存编译器生成的所有文件

Scala 在SBT中保存编译器生成的所有文件,scala,sbt,Scala,Sbt,我目前正在为我用Scala编写的领域特定语言(DSL)开发一个编译器插件。因此,我在repo中有一个“examples”目录(SBT子项目),其中包含一个使用DSL编写的示例程序。我可以很好地编译这个子项目,并且它按照预期工作 我的插件分析这个示例程序并生成一个输出文件(通过简单地写入文件生成)。我已经为相同的“示例”目录创建了一个新的子项目。它有特殊的命令行选项,指示编译器使用插件。一切运行正常,但尽管进行了多次搜索,我仍然无法找出输出文件的生成位置。我怀疑它被扔掉了 下面是我的build.s

我目前正在为我用Scala编写的领域特定语言(DSL)开发一个编译器插件。因此,我在repo中有一个“examples”目录(SBT子项目),其中包含一个使用DSL编写的示例程序。我可以很好地编译这个子项目,并且它按照预期工作

我的插件分析这个示例程序并生成一个输出文件(通过简单地写入文件生成)。我已经为相同的“示例”目录创建了一个新的子项目。它有特殊的命令行选项,指示编译器使用插件。一切运行正常,但尽管进行了多次搜索,我仍然无法找出输出文件的生成位置。我怀疑它被扔掉了

下面是我的
build.sbt

lazy val commonSettings = Seq(
  organization := "com.bitbucket.bitstream-dsl",
  scalaVersion := "2.12.6"
)

lazy val root = (project in file("."))
  .settings(
    commonSettings,
    version := "0.1.0-SNAPSHOT",
    name := "example-project"
  )

lazy val examples = (project in file("examples"))
  .settings(
    commonSettings,
    name := "examples"
  )
  .dependsOn(root)

lazy val examplesPlugin = (project in file("examples"))
  .settings(
    commonSettings,
    scalacOptions += "-Xplugin:plugin/target/scala-2.12/plugin_2.12-0.1-SNAPSHOT.jar",
    name := "examples_plugin",
    target := baseDirectory.value / "target-plugin",
    publishArtifact in Compile := true
  )
  .dependsOn(root)

lazy val plugin = (project in file("plugin"))
  .settings(
    commonSettings,
    scalacOptions += "-J-Xss256m",
    name := "plugin",
    libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value
  )
  .dependsOn(root)

libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % Test
libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value
以下是我如何将内容写入文件:

def printFile(funcBody: String) : Unit = {
  // open a file to be written
  val file = new File("test.v")
  val bw = new BufferedWriter(new FileWriter(file))
  bw.write(funcBody + "\n")

  //close the output file
  bw.close() 
}

“通过简单写入文件生成”的代码是什么?我在问题的底部添加了一个新的代码部分,在
val file=…
行之后添加
println(file.getCanonicalPath)
查看它在哪里结束如果我手动测试编译器插件,这会起作用,但是SBT似乎会抑制插件的任何控制台输出。也许SBT的
最后一个
命令会有所帮助?