public void assembleBuildInheritance()

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);
        }
    }