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

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

Итак, я хочу определить настраиваемую задачу (скажем, prepare-app ) и вставить ее в дерево зависимостей существующих задач (скажем, package-bin ), чтобы каждый раз кто-то вызывает package-bin мои пользовательские задачи запускаются прямо перед ним.

Я пробовал сделать это

  def mySettings = {
    inConfig(Compile)(Seq(prepareAppTask <<= packageBin in Compile map { (pkg: File) =>
      // 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")

, но это не выполняется автоматически package-bin прямо перед упаковкой вывода компиляции в jar. Итак, как мне изменить приведенный выше код, чтобы он запускался в нужное время?

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

33
задан Lars Tackmann 19 October 2011 в 12:20
поделиться