8000 [MNG-7720] Wrong build order of forked projects (#1038) · apache/maven@57acdd4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 57acdd4

Browse files
authored
[MNG-7720] Wrong build order of forked projects (#1038)
The original fix MNG-7672 matched the "scope" but missed the "order". `project.collectedProjects` are in order as loaded (POM order), is not topologically sorted. Fix is to use DAG of projects, ask for downstream projects (will return more then we need but sorted) and narrow that list to only contain collected projects. Related commit: 48cac1c --- https://issues.apache.org/jira/browse/MNG-7720
1 parent 528cea3 commit 57acdd4

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,11 @@ public LifecycleDependencyResolver(ProjectDependenciesResolver projectDependenci
9090

9191
public static List<MavenProject> getProjects(MavenProject project, MavenSession session, boolean aggregator) {
9292
if (aggregator && project.getCollectedProjects() != null) {
93-
return getProjectAndSubModules(project).collect(Collectors.toList());
93+
List<MavenProject> projectAndSubmodules =
94+
getProjectAndSubModules(project).collect(Collectors.toList()); // not sorted but what we need
95+
return session.getProjects().stream() // sorted all
96+
.filter(projectAndSubmodules::contains)
97+
.collect(Collectors.toList()); // sorted and filtered to what we need
9498
} else {
9599
return Collections.singletonList(project);
96100
}
@@ -99,7 +103,10 @@ public static List<MavenProject> getProjects(MavenProject project, MavenSession
99103
private static Stream<MavenProject> getProjectAndSubModules(MavenProject project) {
100104
return Stream.concat(
101105
Stream.of(project),
102-
project.getCollectedProjects().stream().flatMap(LifecycleDependencyResolver::getProjectAndSubModules));
106+
project.getCollectedProjects() == null
107+
? Stream.empty()
108+
: project.getCollectedProjects().stream()
109+
.flatMap(LifecycleDependencyResolver::getProjectAndSubModules));
103110
}
104111

105112
public void resolveProjectDependencies(

0 commit comments

Comments
 (0)
0