in src/main/java/org/apache/maven/plugin/resources/remote/ModelInheritanceAssembler.java [308:354]
private static void mergeReportPluginLists(Reporting child, Reporting parent, boolean handleAsInheritance) {
if ((child == null) || (parent == null)) {
// nothing to do.
return;
}
List<ReportPlugin> parentPlugins = parent.getPlugins();
if ((parentPlugins != null) && !parentPlugins.isEmpty()) {
Map<String, ReportPlugin> assembledPlugins = new TreeMap<>();
Map<String, ReportPlugin> childPlugins = child.getReportPluginsAsMap();
for (ReportPlugin parentPlugin : parentPlugins) {
String parentInherited = parentPlugin.getInherited();
if (!handleAsInheritance || (parentInherited == null) || Boolean.parseBoolean(parentInherited)) {
ReportPlugin assembledPlugin = parentPlugin;
ReportPlugin childPlugin = childPlugins.get(parentPlugin.getKey());
if (childPlugin != null) {
assembledPlugin = childPlugin;
mergeReportPluginDefinitions(childPlugin, parentPlugin, handleAsInheritance);
}
if (handleAsInheritance && (parentInherited == null)) {
assembledPlugin.unsetInheritanceApplied();
}
assembledPlugins.put(assembledPlugin.getKey(), assembledPlugin);
}
}
for (ReportPlugin childPlugin : childPlugins.values()) {
if (!assembledPlugins.containsKey(childPlugin.getKey())) {
assembledPlugins.put(childPlugin.getKey(), childPlugin);
}
}
child.setPlugins(new ArrayList<>(assembledPlugins.values()));
child.flushReportPluginMap();
}
}