Scala 在sbt构建上运行任务
我刚刚开始使用Scala 在sbt构建上运行任务,scala,sbt,Scala,Sbt,我刚刚开始使用sbt,不太清楚它是如何工作的,我在build.sbt文件中创建了一个任务 lazy val execScript = taskKey[Unit]("Execute the shell script") execScript := { "C:/Users/dsweeney/Documents/configuration-services/swagger/codegen/SwaggerActivate.bat" ! } 我可以很好地运行它,但我希望它在每次运行构建文件时都能运行,我
sbt
,不太清楚它是如何工作的,我在build.sbt
文件中创建了一个任务
lazy val execScript = taskKey[Unit]("Execute the shell script")
execScript := {
"C:/Users/dsweeney/Documents/configuration-services/swagger/codegen/SwaggerActivate.bat" !
}
我可以很好地运行它,但我希望它在每次运行构建文件时都能运行,我该怎么做呢
我一直在尝试将其添加到.aggreate
方法中
lazy val root = Project(
id = "configsvcs",
base = file(".")
).dependsOn(data_model)
.aggregate(data_model, slickMigration, execScript )
但这似乎不是工作错误,因为方法聚合的参数太多
谢谢您似乎希望在构建过程中生成源文件。实现这一目标的正确方法是:
sourceGenerators in Compile += execScript.taskValue
这将在每次编译项目之前运行任务。要使其工作,任务必须返回其生成的文件列表:
lazy val execScript = taskKey[Seq[File]]("Execute the shell script")
execScript := {
val outputDir := sourceManaged.in(Compile).value / "generated"
// bad: absolute local path
"C:/Users/dsweeney/Documents/configuration-services/swagger/codegen/SwaggerActivate.bat" !
// return all Java files of the output directory
outputDir ** "*.java" // or "*.scala"?
}
注意,最好将文件生成到sourceManaged
目录中