sbt 0.11.2如何将~copy-resources与~aux-compile结合起来

时间:2011-12-12 03:04:27

标签: scala sbt xsbt-web-plugin

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

"org.eclipse.jetty" % "jetty-webapp" % "8.0.1.v20110908" % "container",

所以当我做的时候

> container:start

我的应用启动就好了。

但是如果我改变了一些html,那么在我做

之前,改变不会开始
> copy-resources

和scala源代码更改在我执行之前不会反映出来

> aux-compile
(这个很难找到!!)

问题在于我希望立即反映这一点。 我能做到

> ~ copy-resources

> ~ aux-compile    
单独

以便在自动保存时发生一个或另一个。

问题在于我没有看到任何明显的方法来做到这两点,因为我无法先输入第二个波浪号前缀命令而不先按下回车键来获取命令提示符,这取消了运行波浪号命令。

感谢。


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

我通过运行sbt(0.11.2)然后执行

来解决此问题
> container:start

所以你会注意到,如果你做" ~aux-compile"并更改日志语句,或更改标签读取的名称,该名称将动态更新。如果你做了#34; ~copy-resources"并改变"你好" - > " HOLA"你会看到它在飞行中发生了变化。我试图做到这一点,以便两者都将在保存时完成。 "〜容器:重新加载/"好像什么也没做!

来自@Vasil Remeniuk的答案似乎是正确的方法,除了我还没弄清楚确切地将代码放在哪里以使其工作。 (我得到一个语法错误。)如果有人愿意验证该代码是否有效,或者我是否对我的项目做错了会阻止它工作,那会很棒吗?

谢谢!
杰米

<小时/> 最终更新:
感谢@Vasil Remeniuk的建议,我得到了所有这些。如果有人需要它来快速启动以使用可重新加载的Jetty容器,只需在https://github.com/jpswain/DummySbtScalaWicket.git下载它 然后从目录运行:

$ sbt

一旦sbt出现,请执行此操作:

> container:start
> ~auxx

2 个答案:

答案 0 :(得分:14)

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

~ ;copy-resources;aux-compile

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

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

答案 1 :(得分: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