Запуск пользовательской задачи автоматически до / после стандартной задачи
Я часто хочу выполнить некоторую настройку, прежде чем запускать одну из стандартных задач. Я понимаю, что могу выполнять новые задачи, которые выполняют существующие задачи в том порядке, в котором я хочу, но я нахожу, что громоздкость и вероятность того, что разработчик пропустит, что он должен запускать мой компилятор вместо компиляции, большой и приводит к затруднению исправления ошибок ,
Поэтому я хочу определить настраиваемую задачу (например, подготовить-приложение ) и ввести ее в дерево зависимостей существующих задач (например, пакетную корзину ), так что каждый раз, когда кто-то запускает пакетный ящик, мои пользовательские задачи запускаются прямо перед ним.
Я попытался сделать это
- В чем разница между def foo = {} и def foo () = {} в Scala?
- Поиск параметров типа через reflection в Scala 2.10?
- Каковы некоторые убедительные варианты использования зависимых типов методов?
- Как получить последнюю дату определенного месяца с помощью JodaTime?
- Преобразовать java.util.HashMap в scala.collection.immutable.Map в java
def mySettings = { inConfig(Compile)(Seq(prepareAppTask < // fiddle with the /target folder before package-bin makes it into a jar })) ++ Seq(name := "my project", version := "1.0") } lazy val prepareAppTask = TaskKey[Unit]("prepare-app")
но он не выполняется автоматически с помощью пакета bin непосредственно перед тем, как он упаковывает компиляцию в банку. Итак, как мне изменить приведенный выше код для запуска в нужное время?
В более общем плане, где я могу найти информацию о подключении к другим задачам, таким как компиляция, и существует ли общий способ убедиться, что ваши собственные задачи выполняются до и после вызова стандартных задач?
- Как закрепить два (или более) DataFrame в Spark
- Как добавить «предоставленные» зависимости обратно в путь classа run / test tasks?
- Являются ли HLists не более чем сложным способом написания кортежей?
- Как заставить DataFrame оценивать в Spark
- Возrotation в Скала
- Scala 2.8 breakOut
- Конструктор перегрузки для classов Case Scala?
- Объяснение метода складки искры RDD
Расширение существующей задачи документируется документацией SBT для задач (см. Раздел « Изменение существующей задачи» ).
Что-то вроде этого:
compile in Compile <<= (compile in Compile) map { _ => // what you want to happen after compile goes here }
На самом деле, есть другой способ – определить, что ваша задача зависит от компиляции
prepareAppTask := (whatever you want to do) dependsOn compile
а затем изменить packageBin, чтобы зависеть от этого:
packageBin <<= packageBin dependsOn prepareAppTask
(все вышеперечисленные не проверены, но общая нагрузка должна работать, я надеюсь).