次のシナリオを参照してください。のGradle DEPENDSONと動的変数
def dynamic = "original value"
task stuffThatHasToBeDoneBefore << {
doSomething(dynamic)
}
task b (dependsOn: stuffThatHasToBeDoneBefore) {
dynamic = "value of task b that never will be used by stuffThatHasToBeDoneBefore-task"
}
task c (dependsOn: stuffThatHasToBeDoneBefore) {
dynamic = "value of task c"
}
私は、コードの重複を減らすために、私のビルドの実行にstuffThatHasToBeDoneBeforeタスクを複数回使用します。
今のところ、タスクbを実行することはできません。また、stuffThatHasToBeDoneBeforeタスクは動的値(「stuffThatHasToBeDoneBeforeタスクでは使用されないタスクbの値」で事前に実行されます)動的変数の値は構成フェーズ(タスクcの値)でタスクcによって上書きされるためです。
私はこれを行うには見る唯一の方法は以下の通りです:
task b_alternative << {
dynamic = "value of task b that will be used in stuffThatHasToBeDoneBefore-task now"
tasks.stuffThatHasToBeDoneBefore.execute()
}
を残念ながら、これは単なる回避策であり、私はtasks.taskname.executeを使用することを推奨されていないことを複数のソースで読みます()
私はstuffThatHasToBeDoneBeforeタスクを動的な値で再利用できるようにコードを構造化する方法を教えていただけますか?
通常、タスクの代わりに単純なメソッドを使用し、動的値を引数として渡しますが、stuffThatHasToBeDoneBefore-taskはタスクとしてのみ使用可能なため、これは不可能です方法としてではありません。
それについては考えていませんでした - ありがとう! – SilverJan