web-dev-qa-db-ja.com

Gradle:他のサブプロジェクトのタスクに「dependsOn」

私は階層的なgradle3.1プロジェクトを持っています。これは次のようになります。

root
    - build.gradle
    - settings.gradle
    - server (Java + WAR plugin)
        - build.gradle
    - client (Node plugin)
        - build.gradle

したがって、settings.gradleは次のようになります。

include ':server', ':client'

ここで実行したいのは、:client:buildタスクの出力を*.warタスクによって生成された:server:warファイルにバンドルすることです。そのためには、:server:warの出力ファイルを:client:buildにコピーする必要があるときに常に存在するようにするために、:client:buildから:server:warへの依存関係が必要です。仕事。

質問は:これはどのように機能しますか?

ここで達成したいこと::server:warが実行されるたびに、:client:buildが実行されますfirst

私がこれまでに試したこと(どれもうまくいきませんでした):

// in server/build.gradle
task war {
    dependsOn ':client:build'
}

私も試しました:

// in server/build.gradle
war.dependsOn = ':client:build'

...そしてまた:

// in server/build.gradle
task war(dependsOn: ':client:build') {

}

上記の試みはどれも機能しません。私が間違っていることについて何か考えはありますか?

9
Alan47

試してみてください:

war.dependsOn ':client:build'

そして:

task war {
    dependsOn ':client:build'
}

warと呼ばれる新しいタスクを定義します

そして:

war.dependsOn = ':client:build'

理論的には this メソッドを呼び出しますが、引数の型が間違っています

そして:

task war(dependsOn: ':client:build') {
}

ここでは、新しいタスクも定義します。

10
Opal