执行具有修改的依赖项的sbt任务



我想创建一个自定义的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

相关内容

  • 没有找到相关文章

最新更新