如何在后台执行'~copyResources'同时执行'run'

时间:2014-08-14 01:06:15

标签: sbt

我们有一个基于Unfiltered / Finagle / Netty的网络项目。在本地开发时,我们希望一次运行两个SBT命令:

  • run运行本地服务器以进行测试
  • ~copyResources在后​​台,以便对运行的webapp可见JS和CSS资源的更改

到目前为止,我已经尝试了以下但没有成功

  • 通过fork in run := true设置run to fork,然后通过;run;~copyResources调用它们。问题似乎是正在运行的子流程无法从SBT控制台接收输入,因此我们无法在合适的时间关闭它。

  • 通过fork in copyResources := true将~copyResources设置为fork,然后通过;~copyResources;run调用它们。在copyResources中断之前,run命令才会启动。

  • 尝试通过类似all run copyResources的内容同时运行2个任务。我收到了错误消息Cannot mix input tasks with plain tasks/settings

1 个答案:

答案 0 :(得分:0)

一种解决方案是使用sbt-revolver plugin。我创建了一个使用little sample project setupUndertowHandlebars。然后将其克隆到项目文件夹中:

> sbt
> re-start
> [press enter]
> ~copyResources

打开http://localhost:7070/foo,然后修改template.hbs并重新加载。对于Unfiltered / Finagle设置,它应该类似。你怎么在Finagle之上喜欢Unfiltered?我们尝试了一下Finatra,但并不是那么喜欢它。

注意:执行re-start时,您会看到以下消息:

[info] Application sbt-run-copy-resources not yet started
[info] Starting application sbt-run-copy-resources in the background ...

哪种表示插件会自动复制资源。这至少对我来说对于把手模板不起作用,因此需要额外的~copyResources