9

そのタスクがスキップされるときに、タスクの依存関係を実行しないことはどういうわけか可能ですか?

以下の例では、 を実行するときにサーバーが既に実行されている場合、jar(および の依存関係jar) を実行しないrunServerTestsようにします。この場合、サーバーは別のプロセスによって開始されます。

apply plugin: 'java'

task startServerIfNotRunning(dependsOn: jar) {
  onlyIf { isServerNotRunning() }
  ...
}

task runServerTests(dependsOn: startServerIfNotRunning) { ... }

常に実行する必要がある他のタスクがそのタスクに依存している可能性があるonlyIfため、タスクに を追加したくありません。タスクには、独自の依存関係もありますjarjar

4

2 に答える 2

4

次のようなことができます

task startServerIfNotRunning(dependsOn: jar) {
    if (isServerNotRunning()) {
        enabled = false;
        dependsOn = [];
    }
}

構成フェーズで評価される if ステートメントと、依存するタスクが削除されます。コードと出力を使用したGradle タスクのスキップでこれを要約しました。見てください。

于 2014-12-28T15:41:18.020 に答える