[MNG-8299] Fix ordering of phases from custom lifecycles (#1802)

---

https://issues.apache.org/jira/browse/MNG-8299
This commit is contained in:
Guillaume Nodet 2024-10-16 16:19:33 +02:00 committed by GitHub
parent eafb2fb8b1
commit 4e5c89c403
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 60 additions and 31 deletions

View File

@ -204,42 +204,71 @@ public class DefaultLifecycleRegistry implements LifecycleRegistry {
@Override
public Collection<Phase> phases() {
return lifecycle.getPhases().stream()
.map(name -> (Phase) new Phase() {
@Override
public String name() {
return name;
}
List<String> names = lifecycle.getPhases();
List<Phase> phases = new ArrayList<>();
for (int i = 0; i < names.size(); i++) {
String name = names.get(i);
String prev = i > 0 ? names.get(i - 1) : null;
phases.add(new Phase() {
@Override
public String name() {
return name;
}
@Override
public List<Phase> phases() {
@Override
public List<Phase> phases() {
return List.of();
}
@Override
public Stream<Phase> allPhases() {
return Stream.concat(
Stream.of(this), phases().stream().flatMap(Lifecycle.Phase::allPhases));
}
@Override
public List<Plugin> plugins() {
Map<String, LifecyclePhase> lfPhases = lifecycle.getDefaultLifecyclePhases();
LifecyclePhase phase = lfPhases != null ? lfPhases.get(name) : null;
if (phase != null) {
Map<String, Plugin> plugins = new LinkedHashMap<>();
DefaultPackagingRegistry.parseLifecyclePhaseDefinitions(plugins, name, phase);
return plugins.values().stream().toList();
}
return List.of();
}
@Override
public Collection<Link> links() {
if (prev == null) {
return List.of();
}
} else {
return List.of(new Link() {
@Override
public Kind kind() {
return Kind.AFTER;
}
@Override
public Stream<Phase> allPhases() {
return Stream.concat(
Stream.of(this), phases().stream().flatMap(Lifecycle.Phase::allPhases));
}
@Override
public Pointer pointer() {
return new Pointer() {
@Override
public String phase() {
return prev;
}
@Override
public List<Plugin> plugins() {
Map<String, LifecyclePhase> lfPhases = lifecycle.getDefaultLifecyclePhases();
LifecyclePhase phase = lfPhases != null ? lfPhases.get(name) : null;
if (phase != null) {
Map<String, Plugin> plugins = new LinkedHashMap<>();
DefaultPackagingRegistry.parseLifecyclePhaseDefinitions(plugins, name, phase);
return plugins.values().stream().toList();
}
return List.of();
@Override
public Type type() {
return Type.PROJECT;
}
};
}
});
}
@Override
public Collection<Link> links() {
return List.of();
}
})
.toList();
}
});
}
return phases;
}
@Override