【问题标题】:sbt 0.11.2 how to combine ~copy-resources with ~aux-compilesbt 0.11.2 如何将 ~copy-resources 与 ~aux-compile 结合起来
【发布时间】:2012-01-18 03:54:33
【问题描述】:

我正在使用 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",

所以当我这样做时

> 容器:开始

我的应用启动正常。

但是,如果我更改了一些 html,直到我更改后才会生效

> 复制资源

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

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

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

> ~ 复制资源

> ~ 辅助编译 

分开这样一个或另一个会在保存时自动发生。

问题是我看不到任何明显的方法可以同时执行这两种操作,因为如果不先按 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 出现,执行以下操作:

> 容器:开始
> ~auxx

【问题讨论】:

    标签: scala sbt xsbt-web-plugin


    【解决方案1】:

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

    ~ ;copy-resources;aux-compile
    

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

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

    【讨论】:

      【解决方案2】:

      您可以创建自己的任务来调用/依赖于 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
      

      【讨论】:

      • 感谢您这么快的回复!我一定做错了什么。将您写入的内容粘贴到我的 build.sbt 文件中时出现语法错误。我还尝试制作 Build.scala 文件并将其放入其中,但也出现错误。你能验证语法是否正确吗? (我是这个工具和 Scala 的新手。)我特别不理解“map ((c, a) =>)”部分。
      • 1) 您只能在Build.scala 中创建新任务/设置; 2) 我的代码是一个虚拟代码 - 具体来说,我对 auxCompile 任务键没有信心(标准 SBT 只有一个 compile 任务,对吗)? 3)map ((c, a) =&gt;) 评估任务/设置,您在左侧传递,因此您可以使用它们的输出。
      • 嗨@Vasil Remeniuk!感谢您的回复!你介意看看我放在 github 上的迷你快速入门项目,看看你有什么建议让我完成这项工作吗?我用链接更新了上面的问题。我真的很感激!
      • 检查了你的项目@github:1)从/project中删除build.sbt 2)将上面的示例代码(更新)放入/project/SampleBuild.scala
      • +1 已接受。工作得很好!我将其签入示例项目,并将解决方案归功于您。 (github.com/jpswain/DummySbtScalaWicket/commit/…) 再次感谢!
      猜你喜欢
      • 1970-01-01
      • 2018-12-08
      • 2012-03-17
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      相关资源
      最近更新 更多