1
1
package com .gradle ;
2
2
3
- import org .apache .maven .execution .ExecutionEvent ;
4
3
import org .apache .maven .execution .MavenExecutionRequest ;
5
4
import org .apache .maven .execution .MavenSession ;
6
5
import org .apache .maven .model .building .ModelProcessor ;
16
15
import static java .util .Collections .emptyList ;
17
16
18
17
public class RootProjectExtractor {
18
+
19
19
private final ProjectBuilder projectBuilder ;
20
20
private final ModelProcessor modelProcessor ;
21
21
private final Logger logger ;
@@ -27,10 +27,6 @@ public RootProjectExtractor(ProjectBuilder projectBuilder, ModelProcessor modelP
27
27
this .logger = logger ;
28
28
}
29
29
30
- public MavenProject extractRootProject (ExecutionEvent event ) {
31
- return extractRootProject (event .getSession ());
32
- }
33
-
34
30
public MavenProject extractRootProject (MavenSession session ) {
35
31
List <MavenProject > allProjects = discoverAllProjects (session .getAllProjects ());
36
32
File workspaceDirectory = getWorkspaceDirectory (session );
@@ -44,11 +40,11 @@ public MavenProject extractRootProject(MavenSession session) {
44
40
try {
45
41
return projectBuilder .build (workspaceDirectoryPom , session .getProjectBuildingRequest ()).getProject ();
46
42
} catch (ProjectBuildingException e ) {
47
- logger .error ("Exception locating the top level project" , e );
43
+ logger .error ("Error locating the top level project" , e );
48
44
}
49
45
}
50
46
51
- // We didn't successfully identify the root project, so just return the first project.
47
+ // return the first project if the top level project was not identified successfully
52
48
return allProjects .get (0 );
53
49
}
54
50
@@ -61,13 +57,10 @@ private File getWorkspaceDirectory(MavenSession session) {
61
57
}
62
58
}
63
59
64
- /**
65
- * Older Maven versions under-reported the list of discovered projects.
66
- * This method discovers all their submodules. For newer Maven versions it is a no-op.
67
- */
68
60
private List <MavenProject > discoverAllProjects (Collection <MavenProject > sessionProjects ) {
69
61
Set <MavenProject > allProjects = new LinkedHashSet <>(sessionProjects );
70
62
sessionProjects .stream ().flatMap (p -> Optional .ofNullable (p .getCollectedProjects ()).orElse (emptyList ()).stream ()).forEach (allProjects ::add );
71
63
return new ArrayList <MavenProject >(allProjects );
72
64
}
65
+
73
66
}
0 commit comments