File tree 1 file changed +27
-0
lines changed
src/main/java/org/scoverage/plugin
1 file changed +27
-0
lines changed Original file line number Diff line number Diff line change 23
23
import java .io .File ;
24
24
import java .io .FileInputStream ;
25
25
import java .util .ArrayList ;
26
+ import java .util .ArrayDeque ;
26
27
import java .util .Arrays ;
27
28
import java .util .List ;
28
29
import java .util .Locale ;
30
+ import java .util .Queue ;
29
31
import java .util .ResourceBundle ;
30
32
import java .util .concurrent .atomic .AtomicInteger ;
31
33
@@ -535,6 +537,31 @@ else if ( !module.getPackaging().equals( "pom" ) )
535
537
scoverageDataDirs .size () ) );
536
538
}
537
539
540
+ /* traverse up the module tree until a module isExecutionRoot */
541
+ if ( topLevelModule == null )
542
+ {
543
+ Queue <MavenProject > candidateForTopLevelModules = new ArrayDeque <>(reactorProjects );
544
+ while ( !candidateForTopLevelModules .isEmpty () )
545
+ {
546
+ MavenProject module = candidateForTopLevelModules .poll ();
547
+ if ( module .isExecutionRoot () )
548
+ {
549
+ topLevelModule = module ;
550
+ break ;
551
+ }
552
+ if ( module .hasParent () )
553
+ {
554
+ candidateForTopLevelModules .add (module .getParent ());
555
+ }
556
+ }
557
+ }
558
+ if ( topLevelModule == null )
559
+ {
560
+ // This exception should never be thrown.
561
+ throw new IllegalStateException ("Cannot find the top level module to write the " +
562
+ "aggregated reports." );
563
+ }
564
+
538
565
File topLevelModuleOutputDirectory = rebase ( outputDirectory , topLevelModule );
539
566
File topLevelModuleXmlOutputDirectory = rebase ( xmlOutputDirectory , topLevelModule );
540
567
You can’t perform that action at this time.
0 commit comments