I私はタスク2つの異なる回を再割り当てすることにより、タスク2はタスク1に依存して作られた.sbtファイルにして、単純なタスクはタスク1とタスク2があります。実行中
val task1 = taskKey[String]("task1 original")
val task2 = taskKey[String]("task2 original")
task1 := {
val log = streams.value.log
log.error("task1 original output")
"task1 original output"
}
task2 := {
val log = streams.value.log
log.error("task2 original output")
"task2 original output"
}
task2 := {
val log = streams.value.log
log.error("task2 chain1 before task1.value")
val x = task1.value
log.error("task2 chain1 before task2.value")
task2.value
}
task2 := {
val log = streams.value.log
log.error("task2 chain2 before task1.value")
val x = task1.value
log.error("task2 chain2 before task2.value")
val y = task2.value
log.error("task2 chain2 before task2.value")
task2.value
}
私は、SBTをロードし、彼らに私を実行すると、次の出力を得る:
> task1
[error] task1 original output
[success] Total time: 0 s, completed Mar 26, 2017 1:50:53 PM
> task2
[error] task1 original output
[error] task2 original output
[error] task2 chain1 before task1.value
[error] task2 chain1 before task2.value
[error] task2 chain2 before task1.value
[error] task2 chain2 before task2.value
[error] task2 chain2 before task2.value
[success] Total time: 0 s, completed Mar 26, 2017 1:50:56 PM
なぜこのように見えますか? task2がより古いtask2割り当てを呼び出し、無限ループを引き起こさないのはなぜですか?
タスクの実行順序はどのくらいですか?ロギング出力は、タスクが実行される実際の順序と一致しない場合があります。タスクの実行順序を記録する信頼できる方法はありますか?
ご協力いただきありがとうございます。