Запуск пользовательской задачи автоматически до / после стандартной задачи

Я часто хочу выполнить некоторую настройку, прежде чем запускать одну из стандартных задач. Я понимаю, что могу выполнять новые задачи, которые выполняют существующие задачи в том порядке, в котором я хочу, но я нахожу, что громоздкость и вероятность того, что разработчик пропустит, что он должен запускать мой компилятор вместо компиляции, большой и приводит к затруднению исправления ошибок ,

Поэтому я хочу определить настраиваемую задачу (например, подготовить-приложение ) и ввести ее в дерево зависимостей существующих задач (например, пакетную корзину ), так что каждый раз, когда кто-то запускает пакетный ящик, мои пользовательские задачи запускаются прямо перед ним.

Я попытался сделать это

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 непосредственно перед тем, как он упаковывает компиляцию в банку. Итак, как мне изменить приведенный выше код для запуска в нужное время?

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

Расширение существующей задачи документируется документацией 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 

(все вышеперечисленные не проверены, но общая нагрузка должна работать, я надеюсь).

  • Как ограничить сообщения актера конкретными типами?
  • Scala double definition (2 метода имеют стирание того же типа)
  • Эквивалентен методу #tap Ruby в Scala
  • Является ли библиотека коллекций Scala 2.8 «самой длинной записью о самоубийстве в истории»?
  • Равномерность classа в Apache Spark
  • Система типов в Scala завершена. Доказательство? Пример? Выгоды?
  • Макросы Scala: создание карты из полей classа в Scala
  • Как предотвратить java.lang.OutOfMemoryError: пространство PermGen при компиляции Scala?
  • Использование Либо для обработки сбоев в коде Scala
  • Итерация над запечатанной чертой в Скала?
  • objective заявления «вернуть» в Scala?
  • Interesting Posts

    Что означают термины «граница процессора» и «граница ввода-вывода»?

    Почему многие classы Collection в Java расширяют абстрактный class и реализуют интерфейс?

    Представление нулевого значения в JSON

    Как копировать файлы с помощью SSH?

    Какие существуют гарантии на сложности выполнения (Big-O) методов LINQ?

    Ошибка: не может соответствовать запрограммированным classам в одном файле dex. Попробуйте указать список main-dex. # методы: 72477> 65536

    Windows: как я могу перенаправить звук, поступающий от микрофона к выходу динамиков

    Персистентные данные с помощью программирования против интерфейса

    Как мне перейти на Snow Leopard без CD-привода?

    Может ли конструктор в Java быть приватным?

    ASP.NET Singleton

    Действительно ли printf всегда очищает буфер при столкновении с новой линией?

    Почему использование имени функции в качестве указателя функции эквивалентно применению оператора адреса к имени функции?

    Создание установочного флеш-диска Windows XP в Linux

    Как восстановить случай по умолчанию переменной в VBA (Excel 2010)?

    Давайте будем гением компьютера.