4

我正在使用 sbt 0.11.2 和 xsbt-web-plugin 0.2.10 来构建 Wicket (1.5.3) 应用程序。我正在使用这个版本的码头:

“org.eclipse.jetty”%“jetty-webapp”%“8.0.1.v20110908”%“容器”,

所以当我这样做的时候

> 容器:开始

我的应用程序启动得很好。

但是,如果我更改了一些 html,则更改不会生效,直到我这样做

> 复制资源

和 scala 源代码更改在我这样做之前不会反映出来

> 辅助编译
(这个很难找到!!)

问题是我希望立即反映这一点。我可以

> ~ 复制资源

或者

> ~ 辅助编译    

分开,以便其中一个或另一个将在保存时自动发生。

问题是我看不到任何明显的方法可以同时执行这两种操作,因为如果不先按 Enter 键以获取命令提示符,我就无法输入第二个带波浪号前缀的命令,这会取消正在运行的波浪号命令。

谢谢。


更新:
我在这里发布了一个我正在尝试做的最小示例:
https ://github.com/jpswain/DummySbtScalaWicket.git

我通过运行 sbt (0.11.2) 来启动它,然后执行

> 容器:开始

因此,您会注意到,如果您执行“~aux-compile”并更改日志语句,或更改标签读取的名称,则会即时更新。如果您执行“~copy-resources”并更改“Hello”->“Hola”,您将看到动态更改。我正在努力做到这一点,以便两者都可以在保存时完成。"~container:reload /" 似乎什么也没做!

@Vasil Remeniuk 的答案似乎是正确的方法,只是我还没有弄清楚将代码放在哪里才能使其正常工作。(我得到一个语法错误。)如果有人能验证该代码是否可以工作,或者我的项目有什么问题会阻止它工作,那就太好了?

谢谢!!
杰米


最后更新:
感谢@Vasil Remeniuk 的建议,我完成了所有这些工作。如果有人需要它来快速开始使用可重新加载的 Jetty 容器,只需在https://github.com/jpswain/DummySbtScalaWicket.git
下载它, 然后从目录运行:

$ sbt

一旦 sbt 出现,执行以下操作:

> 容器:开始
> ~辅助
4

2 回答 2

14

~接受任何命令作为参数,包括命令列表:

~ ;copy-resources;aux-compile

这将运行copy-resources,然后aux-compile在每个触发器上运行。

但是,在这种情况下,我更喜欢 Vasil 的解决方案,因为它只需要对任务图进行一次评估。

于 2011-12-16T01:35:03.567 回答
6

您可以创建自己的调用/依赖于aux-compilecopy-resources

import sbt._
import Keys._
import com.github.siasia._
import PluginKeys._

object SampleProject extends Build {

  val sampleTask = TaskKey[Unit]("combined")

  val setngs = Seq(
    sampleTask <<= (copyResources in Compile, auxCompile in Compile) map {
      (c, p) =>
    }
  )

  val root = Project("root", file(".")) settings(setngs:_*)

  override val projects = Seq(root)

}

,并不断调用新任务

~combined
于 2011-12-12T09:17:58.857 回答