in src/main/java/org/apache/maven/plugin/resources/remote/ModelInheritanceAssembler.java [52:116]
public void assembleBuildInheritance(Build childBuild, Build parentBuild, boolean handleAsInheritance) {
// The build has been set but we want to step in here and fill in
// values that have not been set by the child.
if (childBuild.getSourceDirectory() == null) {
childBuild.setSourceDirectory(parentBuild.getSourceDirectory());
}
if (childBuild.getScriptSourceDirectory() == null) {
childBuild.setScriptSourceDirectory(parentBuild.getScriptSourceDirectory());
}
if (childBuild.getTestSourceDirectory() == null) {
childBuild.setTestSourceDirectory(parentBuild.getTestSourceDirectory());
}
if (childBuild.getOutputDirectory() == null) {
childBuild.setOutputDirectory(parentBuild.getOutputDirectory());
}
if (childBuild.getTestOutputDirectory() == null) {
childBuild.setTestOutputDirectory(parentBuild.getTestOutputDirectory());
}
// Extensions are accumulated
mergeExtensionLists(childBuild, parentBuild);
if (childBuild.getDirectory() == null) {
childBuild.setDirectory(parentBuild.getDirectory());
}
if (childBuild.getDefaultGoal() == null) {
childBuild.setDefaultGoal(parentBuild.getDefaultGoal());
}
if (childBuild.getFinalName() == null) {
childBuild.setFinalName(parentBuild.getFinalName());
}
ModelUtils.mergeFilterLists(childBuild.getFilters(), parentBuild.getFilters());
List<Resource> resources = childBuild.getResources();
if ((resources == null) || resources.isEmpty()) {
childBuild.setResources(parentBuild.getResources());
}
resources = childBuild.getTestResources();
if ((resources == null) || resources.isEmpty()) {
childBuild.setTestResources(parentBuild.getTestResources());
}
// Plugins are aggregated if Plugin.inherit != false
ModelUtils.mergePluginLists(childBuild, parentBuild, handleAsInheritance);
// Plugin management :: aggregate
PluginManagement dominantPM = childBuild.getPluginManagement();
PluginManagement recessivePM = parentBuild.getPluginManagement();
if ((dominantPM == null) && (recessivePM != null)) {
// FIXME: Filter out the inherited == false stuff!
childBuild.setPluginManagement(recessivePM);
} else {
ModelUtils.mergePluginLists(childBuild.getPluginManagement(), parentBuild.getPluginManagement(), false);
}
}