in src/main/java/org/apache/maven/buildcache/CacheDiff.java [220:258]
private void compareExecutions(List<CompletedExecution> current, List<CompletedExecution> baseline) {
Map<String, CompletedExecution> baselineExecutionsByKey = new HashMap<>();
for (CompletedExecution completedExecutionType : baseline) {
baselineExecutionsByKey.put(completedExecutionType.getExecutionKey(), completedExecutionType);
}
Map<String, CompletedExecution> currentExecutionsByKey = new HashMap<>();
for (CompletedExecution e1 : current) {
currentExecutionsByKey.put(e1.getExecutionKey(), e1);
}
// such situation normally means different poms and mismatch in effective poms,
// but in any case it is helpful to report
for (CompletedExecution baselineExecution : baseline) {
if (!currentExecutionsByKey.containsKey(baselineExecution.getExecutionKey())) {
addNewMismatch(
baselineExecution.getExecutionKey(),
"Baseline build contains excessive plugin " + baselineExecution.getExecutionKey(),
"Different set of plugins produces different build results. "
+ "Exclude non-critical plugins or make sure plugin sets match");
}
}
for (CompletedExecution currentExecution : current) {
if (!baselineExecutionsByKey.containsKey(currentExecution.getExecutionKey())) {
addNewMismatch(
currentExecution.getExecutionKey(),
"Cached build doesn't contain plugin " + currentExecution.getExecutionKey(),
"Different set of plugins produces different build results. "
+ "Filter out non-critical plugins or make sure remote cache always run full build "
+ "with all plugins");
continue;
}
final CompletedExecution baselineExecution =
baselineExecutionsByKey.get(currentExecution.getExecutionKey());
comparePlugins(currentExecution, baselineExecution);
}
}