2222import org .gradle .api .Project ;
2323import org .gradle .api .plugins .JavaPlugin ;
2424import org .gradle .api .provider .Provider ;
25+ import org .gradle .api .reporting .ReportingExtension ;
2526import org .gradle .api .tasks .TaskCollection ;
2627import org .gradle .api .tasks .TaskContainer ;
2728import org .gradle .api .tasks .TaskProvider ;
2829import org .gradle .api .tasks .testing .Test ;
30+ import org .gradle .testing .jacoco .plugins .JacocoCoverageReport ;
2931import org .gradle .testing .jacoco .plugins .JacocoTaskExtension ;
3032import org .gradle .testing .jacoco .tasks .JacocoReport ;
3133
@@ -44,10 +46,33 @@ public void apply(Project project) {
4446
4547 if (withCoverage ) {
4648 project .getPlugins ().apply (JacocoLogPlugin .class );
49+ project .getPlugins ().apply ("jacoco-report-aggregation" );
50+
51+ project
52+ .getExtensions ()
53+ .getByType (ReportingExtension .class )
54+ .reports (
55+ reports -> {
56+ reports
57+ .register ("testCodeCoverageReport" , JacocoCoverageReport .class )
58+ .configure (
59+ report -> {
60+ report .getTestSuiteName ().set ("test" );
61+ });
62+ });
63+
64+ project
65+ .getSubprojects ()
66+ .forEach (
67+ p -> {
68+ if (p .file ("src/test" ).exists ()) {
69+ project .getDependencies ().add ("jacocoAggregation" , p );
70+ }
71+ });
4772
4873 var tasks = project .getTasks ();
4974
50- String jacocoTaskName = "jacocoAggregatedReport " ;
75+ String jacocoTaskName = "testCodeCoverageReport " ;
5176 var jacocoAggregatedReport =
5277 configureJacocoReport (tasks , jacocoTaskName , "Aggregated code coverage report at: " );
5378
0 commit comments