Данные методы are not described in the documentation. Я в основном использую :=
в моих .sbt-файлах, но иногда из-за причин, которые я еще не понимаю, задачи, которые я назначаю с помощью :=
, не работают (это означает, что задачи не производят побочных эффектов и ничего не возвращают) , и работать с <<=
. Так в чем разница между <<=
и :=
?SBT, разница между << = и: =
Edit:
Мой пример ниже выполняет задачу очистки, и, когда это делается (doFinally
), работает две другие задачи одновременно.
gae_prep_war := {
val after = Def.task {
(gae_copyJars).value; (compile in Compile).value;
}
(gae_clean, after) {
(clean, task) => clean doFinally task
}
}
Как сейчас, это не сработало, не было ошибок, но никакого эффекта или выхода не было; если я меняю :=
на <<=
, он работает. Моя версия SBT равна 0.13.0 и использует Scala 2.10.2.
Edit2:
Я обнаружил, что :=
работает, если я просто добавить .value
к внешнему выражению:
gae_prep_war := {
val after = Def.task {
(gae_copyJars).value; (compile in Compile).value;
}
(gae_clean, after) {
(clean, task) => clean doFinally task
}
}.value
^
Но я до сих пор не совсем понимаю, почему ...
Если вы покажете нам свою попытку использовать ': =' с задачей, я думаю, мы можем сказать вам, что вы делаете неправильно. –
@SethTisue Я обновил свой вопрос на примере. –
': =' ожидает, что с правой стороны будет использоваться '.value', чтобы фактически оценить любые задачи или настройки, которые он упоминает. В вашем случае все, что находится между внешним '{}', просто описывает задачу; '.value' фактически запускает его, и результат становится результатом' gae_prep_war'. –