Как псевдоним последовательности задач?
У меня есть пользовательские задачи в моем проекте 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 файла в вашем домашнем каталоге, и в этом случае этот псевдоним будет доступен для всех ваших проектов.