マルチプロジェクトビルドでビルドの最後にある卒業タスク

StackOverflow https://stackoverflow.com//questions/24026481

  •  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 、カスタムタスクに関する章の章で。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top