2016-04-07 2 views
1

私は単純なproject with subprojectsを持っており、gradle testコマンドを実行するとすべてのテストの集計レポートを生成します。すべてのサブモジュールのテストフェーズの後にtestReportタスクを実行します

私はgradle documentationに続いて、次の追加しました:

task testReport(type: TestReport) { 
    // make sure this task is run after all subproject test tasks 
    mustRunAfter subprojects*.test 

    destinationDir = file("$buildDir/reports/allTests") 
    // Include the results from the `test` task in all subprojects 
    reportOn subprojects*.test 
} 

私はgradle test testReportを実行したときにこれは動作しますが、私は、ルートプロジェクトにgradle testまたはgradle buildを実行したとき - タスクtestReportが実行されません。

毎回それを指定せずにタスクを実行するにはどうすればよいですか?

答えて

2

追加:test.finalizedBy 'testReport'をbuild.gradleに追加します。ルートレベルにあるだけで、クロージャの内側にある必要はありません。

taskX.finalizedBy taskY 

taskXは、タスクXが実行を完了するたびに実行されます。

+0

こんにちは、あなたの答えに感謝します。あなたのソリューションは次のエラーメッセージを表示します: 'ルートプロジェクトで' test 'というプロパティを見つけることができませんでした' gradle-test-aggregation ' –

+0

あなたのコードを見ました。タスク 'test'はjavaプラグインによって追加され、javaプラグインはサブプロジェクトにのみ適用されているので、gradleは' test'タスクを見つけることができません。あなたはルートプロジェクトにもプラグインを適用することもできますし、 'subprojects'セクションを' allprojects'にすることもできます。 – RaGe

+0

私は今それを理解すると思います。私は、ルートプロジェクトでjavaプラグインを使用したくない(空のjarファイルを作成し、それを作成しない)。手動で '偽のテストを定義し、root build.gradleでタスクをビルドして私が望むものを達成するよりも良い方法はありますか? [更新されたbuild.gradle](https://github.com/frant-hartm/gradle-aggregate-test-report/blob/master/build.gradle#L24) –

関連する問題