マルチプロジェクトビルドでビルドの最後にある卒業タスク
-
21-12-2019 - |
質問
私自身のタスクを作成しようとしていますが、マルチプロジェクトビルド中に生成されたすべてのアーティファクトのパッケージを作成しようとしています。
現在私が正しいことだけです:
gradle build createPackage
.
次のような出力を与える:
:test-utility:compileJava UP-TO-DATE
:test-utility:processResources UP-TO-DATE
...
:test-utility:check UP-TO-DATE
:test-utility:build UP-TO-DATE
Creating Package...
Created.
BUILD SUCCESSFUL
Total time: 4.654 secs
.
createPackage
タスクがある場合:
task createPackage {
println "Creating Package..."
println "Created."
}
.
しかし、私は単に1つのコマンドを実行することによってそれを単にそれを望みます、それでこれを行い、注文の滞在を維持するための最善の方法は何でしょうか?
理想的には、build
タスク内でcreatePackage
を呼び出し、タスクを使用してbuild
タスクに追加します。
解決
OKの間の読み取り
をクリアするものがいくつかあります1)実行フェーズではなく、PrintLNは設定フェーズで実行されています。 http://"nowlow"> http://www.gradle.org/docs/current/userguide/build_lifecycle。詳細についてはHTML
2)単一の「ビルド」タスクを持っていません。コマンドライン上のgradle build
は、各サブプロジェクトの「ビルド」タスクを実行します。あなたのパッケージタスクはそれらのすべてに依存する必要があります。
apply plugin: 'java'
evaluationDependsOnChildren()
task createPackage(type:Zip) {
dependsOn subprojects*.build
}
.
3)あなたは卒業者と宣言的になることができます - あなたがパッケージ化したいものを言うだけで、それが実行する必要があるものを理解するでしょう。たとえば、サブプロジェクトからすべてのjarを整理したいと言うことができます。
apply plugin: 'java'
evaluationDependsOnChildren()
task createPackage(type:Zip) {
from subprojects*.jar
}
. 他のヒント
はたくさんの方法があります。1つの提案は、build
に依存するようにcreatePackage
を変更して、gradle build
だけを呼び出すことができます。それからあなたの仕事を強化し、その入力が何であるかを伝えたい(おそらくjar
のような他のタスクの出力です)。卒業生は、ビルドを実行するときにこれらのタスクを実行に追加し、各タスクの最新のステータスに基づいてそれらを再実行できます。これはUserGuide - http://www.gradle.org/docs/current/useruide/more_about_tasks.html#sec:up_to_date_checks 、カスタムタスクに関する章の章で。