それが可能かどうかはわかりませんが、次のようなことができるようにしたいと思います。
task myTask(executeAfter: myOtherTask) << {
//do something
}
ここで、myTaskはmyOtherTaskが完了するのを待ってから実行しますが、ビルドスクリプトの呼び出し中にmyOtherTaskが明示的に指定されていない場合、myTaskの依存関係として実行されません(dependsOnが発生するように)。
これを追加するためにExpandoMetaClassを使用することを考えましたが、Gradleのライフサイクルでこの方法で実際に実装できるかどうかはわかりません。
Task.metaClass.executeAfter = { dependencyTask ->
if(<some condition>) {
this.dependsOn(dependencyTask)
}
}