2013-10-10 2 views
11

In sbt 0.12, you could specify that one task depended upon another without actually using the output from the input tasks. Таким образом, вы были с указанием чисто упорядоченность на задачах:Как объявить зависимость задачи от задач в 0.13?

unitTask <<= Seq(stringTask, sampleTask).dependOn 

Там нет таких примеров в документации Задачи для SBT 0.13. Какой новый синтаксис для указания указанной зависимости?

ответ

13

Используйте стандартный синтаксис, но игнорировать результаты задач, используемых:

unitTask := { 
    val x = stringTask.value 
    val y = sampleTask.value 
() 
} 

Из-за bug in scalac, вы должны использовать фиктивные имена, в противном случае вы могли бы просто использовать val _ = ....

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

unitTask := { 
    stringTask.value 
    sampleTask.value 
} 
+0

В соответствии с этим определением гарантируются ли выполнение этих задач (stringTask и sampleTask) в последовательности или нет такой гарантии? – HRJ

+3

@ mark-harrah Как переопределить существующую основную задачу? Например. Я хотел бы добавить зависимость от задачи компиляции для создания некоторых папок приложений, чтобы они были доступны, когда приложение запущено. Создание папки в новой задаче довольно просто, но попытка переопределить задачу компиляции вызывает циклическую ошибку ссылки. Любая идея, как это решить? –

+2

@HRJ Sbt всегда будет стараться делать все параллельно. В 0.13.8 есть новая функция, которая позволит вам определить последовательные задачи. См. Http://www.scala-sbt.org/0.13/docs/sbt-0.13-Tech-Previews.html#Sequential+tasks –

4

Так же, как вы делали в 0.12

lazy val taskA= taskKey[Unit]("Prints 'Hello World'") 
lazy val taskB= taskKey[Unit]("Prints 'Good by World'") 
taskA := println("hello world!") 
taskB := println("good by world!") 
taskB <<= taskB.dependsOn(taskA) 

< < В = теперь осуждается увидеть ответ выше.

+0

Интересно. Итак, нет эквивалента, использующего оператор: =, как и для большинства других операций? –

+0

Я не мог найти другого способа (в документации и api). – Jan

+2

'<< =' устарел сейчас. –

8

Официальный migration guide рекомендует вместо:

a <<= a dependsOn b 

определяют его как:

a := (a dependsOn b).value 
Смежные вопросы