Scala 为什么不是';是否将生成的资源复制到classes文件夹?
我已经编写了一个插件来处理一些SQL文件,并生成新的SQL文件作为托管资源。当我运行“sbt compile”时,文件将生成到target/resource\u managed/main/sql文件夹中。当我运行'sbt run'或'sbt test'时,它们不会像我预期的那样复制到target/classes目录中,因此在类路径上查找它们的代码无法找到它们 以下是插件的代码:Scala 为什么不是';是否将生成的资源复制到classes文件夹?,scala,plugins,sbt,Scala,Plugins,Sbt,我已经编写了一个插件来处理一些SQL文件,并生成新的SQL文件作为托管资源。当我运行“sbt compile”时,文件将生成到target/resource\u managed/main/sql文件夹中。当我运行'sbt run'或'sbt test'时,它们不会像我预期的那样复制到target/classes目录中,因此在类路径上查找它们的代码无法找到它们 以下是插件的代码: object SqlProcessorPlugin extends AutoPlugin { import aut
object SqlProcessorPlugin extends AutoPlugin {
import autoImport._
override def requires = plugins.JvmPlugin
override def trigger = noTrigger
object autoImport {
lazy val processorSettings = taskKey[File]("Settings for sql processing")
lazy val processSqlTask = taskKey[Seq[File]]("Process Sql")
def configProcessor(cfg: Configuration) = {
inConfig(cfg) {
Seq(
target in processorSettings := resourceManaged.value / "sql",
sourceDirectory in processorSettings := sourceDirectory.value / "sql",
processSqlTask / fileInputs += (sourceDirectory in processorSettings).value.toGlob / ** / "*.sql",
processSqlTask := {
SqlProcessor.process(
processSqlTask.inputFileChanges,
(target in processorSettings).value
)
},
resourceGenerators += processSqlTask.taskValue,
)
}
}
override val projectSettings = configProcessor(Compile)
}
}
基于其他问题和其他插件的示例,我尝试了很多不同的方法,但是没有任何结果导致生成的文件被复制到类路径
我在这里错过了什么/做错了什么?我发现了问题所在。我使用resourceManager.value而不是(Compile/resourceManaged.value)作为目标目录。此外,我认为这会导致输出文件的相对路径混乱,导致它们被复制到错误的位置。是否
SqlProcessor.process
返回所有生成的文件?是的,它返回生成的文件。我发现它是在复制文件,只是不是在我预期的地方。它将它们复制到target/classes/scala-2.13/classes/resource\u managed,而不是target/classes。如何将它们直接复制到classes文件夹下?