Как псевдоним последовательности задач?

У меня есть пользовательские задачи в моем проекте SBT (0.12.2). Назовите их a, b и c. Поэтому, когда я в интерактивном режиме SBT, я могу просто набрать a и выполнить задачу, связанную с a. Я также могу набрать ;a;b;c, и три задачи выполняются последовательно; то же самое, что и ;clean;compile. То, что я также могу сделать из интерактивной оболочки, - создать псевдоним для их запуска: alias all=;a;b;c. Теперь, когда я набираю all, задачи выполняются очевидным образом. Я пытаюсь создать этот псевдоним внутри конфигурации SBT для моего проекта.

В этом разделе документации SBT рассматриваются задачи, но все, что я мог достигнуть, было примерно так:

lazy val a = TaskKey[Unit]("a", "does a")
lazy val b = TaskKey[Unit]("b", "does b")
lazy val c = TaskKey[Unit]("c", "does c")
lazy val all = TaskKey[Unit]("all", ";a;b;c")

lazy val taskSettings = Seq(
    all <<= Seq(a,b,c).dependOn
)

Проблема с этим подходом заключается в том, что задачи объединены, и поэтому их выполнение происходит параллельно, в отличие от последовательного, чего я пытаюсь достичь. Итак, как я могу создать псевдоним типа alias all=;a;b;c внутри конфигурационного файла SBT?

Ответ 1

Я искал то же самое и нашел этот запрос для простого способа сглаживания и коммит, который предоставляет один: addCommandAlias.

В моем build.sbt у меня теперь есть:

addCommandAlias("go", ";container:start;~copy-resources")

Как вы могли догадаться, запись go в консоли теперь приведет к более длинной последовательности команд для меня.

Ответ 2

Я понял:

lazy val taskSettings = Seq(
    all <<= c dependsOn (b dependsOn a)
)

Ответ 3

Другим способом достижения этого является определение псевдонима в вашем файле .sbtrc, который будет в корне каталога вашего проекта.

alias all=;a;b;c

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