我想创建一个自定义的runLocal
任务,该任务使用修改后的unmanagedClasspath
执行sbtrun
任务
我希望unmanagedClasspath
修改仅在运行runLocal
时可见/最后一次,而不是run
我在build.sbt
:中尝试的内容
Runtime / unmanagedClasspath ++= Seq(new java.io.File("src/main/my_resources")).classpath
val runLocal = taskKey[Unit]("Run app with my config")
runLocal := {
(Runtime / run).toTask("").value
}
以上工作,但问题是CCD_;全局";并影响使用此值的每个任务
如何使用在该任务之外不可见的修改后的unmanagedClasspath
运行runLocal
?
我最终使用的是Command
命令可以访问状态并可以对其进行修改。
val runLocal = Command.command("runLocal") { state =>
val extracted = Project.extract(state)
val localConfigClasspath = Seq(new java.io.File("src/main/my_resources")).classpath
val newState = extracted.appendWithoutSession(Seq(Runtime / unmanagedClasspath ++= localConfigClasspath), state)
Project.extract(newState).runInputTask(Runtime / run, "", newState)._1
}
这样,配置仅在运行sbt runLocal
时更改,而不会影响sbt run
。