SBT 0.11.2, как объединить ресурсы копирования с помощью aux-compile - PullRequest
4 голосов
/ 12 декабря 2011

Я использую 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    

отдельно, так что одно или другое произойдет при сохранении автоматически.

Проблема в том, что я не вижу никакого очевидного способа сделать оба, потому что я не могу ввести вторую команду с префиксом тильды, не нажав сначала клавишу ввода, чтобы получить командную строку, и это отменяет команду запуска тильды.

Спасибо.


UPDATE:
Я опубликовал минимальный пример того, что я пытаюсь сделать здесь:
https://github.com/jpswain/DummySbtScalaWicket.git

Я запускаю это, запустив sbt (0.11.2), а затем выполняя

> container:start

Таким образом, вы заметите, что если вы выполните «~ aux-compile» и измените инструкцию журнала или измените имя, читаемое меткой, оно будет обновляться на лету. Если вы сделаете «~ copy-resources» и измените «Hello» -> «Hola», вы увидите, что все изменилось на лету. Я пытаюсь сделать так, чтобы оба были сохранены. «~ container: reload /», похоже, ничего не делает!

Ответ от @Vasil Remeniuk кажется правильным, за исключением того, что я не знаю точно, куда поместить код, чтобы он работал. (Я получаю синтаксическую ошибку.) Было бы замечательно, если бы кто-нибудь проверил, будет ли работать этот код, или я делаю что-то не так с моим проектом, который мешает его работе?

Спасибо !!
Джейми

<ч /> ФИНАЛЬНОЕ ОБНОВЛЕНИЕ:
Благодаря совету @Vasil Remeniuk все это заработало. Если кому-то нужен быстрый старт для работы с перезагружаемым контейнером Jetty, просто загрузите его по адресу https://github.com/jpswain/DummySbtScalaWicket.git
а затем из каталога запустите:

$ sbt

как только появится sbt, сделайте это:

> container:start
> ~auxx

Ответы [ 2 ]

14 голосов
/ 16 декабря 2011

~ принимает любую команду в качестве аргумента, включая список команд:

~ ;copy-resources;aux-compile

Это будет запускаться copy-resources, а затем aux-compile для каждого триггера.

Однако в этом случае я предпочитаю решение Васила, потому что оно требует только одной оценки графа задач.

6 голосов
/ 12 декабря 2011

Вы можете создать свою собственную задачу, которая вызывает / зависит от aux-compile и copy-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
...