private void assembleModelInheritance()

in src/main/java/org/apache/maven/plugin/resources/remote/ModelInheritanceAssembler.java [160:259]


    private void assembleModelInheritance(Model child, Model parent, String childPathAdjustment, boolean appendPaths) {
        // cannot inherit from null parent.
        if (parent == null) {
            return;
        }

        // Group id
        if (child.getGroupId() == null) {
            child.setGroupId(parent.getGroupId());
        }

        // version
        if (child.getVersion() == null) {
            // The parent version may have resolved to something different, so we take what we asked for...
            // instead of - child.setVersion( parent.getVersion() );

            if (child.getParent() != null) {
                child.setVersion(child.getParent().getVersion());
            }
        }

        // inceptionYear
        if (child.getInceptionYear() == null) {
            child.setInceptionYear(parent.getInceptionYear());
        }

        // url
        if (child.getUrl() == null) {
            if (parent.getUrl() != null) {
                child.setUrl(appendPath(parent.getUrl(), child.getArtifactId(), childPathAdjustment, appendPaths));
            } else {
                child.setUrl(parent.getUrl());
            }
        }

        assembleDistributionInheritance(child, parent, childPathAdjustment, appendPaths);

        // issueManagement
        if (child.getIssueManagement() == null) {
            child.setIssueManagement(parent.getIssueManagement());
        }

        // description
        if (child.getDescription() == null) {
            child.setDescription(parent.getDescription());
        }

        // Organization
        if (child.getOrganization() == null) {
            child.setOrganization(parent.getOrganization());
        }

        // Scm
        assembleScmInheritance(child, parent, childPathAdjustment, appendPaths);

        // ciManagement
        if (child.getCiManagement() == null) {
            child.setCiManagement(parent.getCiManagement());
        }

        // developers
        if (child.getDevelopers().size() == 0) {
            child.setDevelopers(parent.getDevelopers());
        }

        // licenses
        if (child.getLicenses().size() == 0) {
            child.setLicenses(parent.getLicenses());
        }

        // developers
        if (child.getContributors().size() == 0) {
            child.setContributors(parent.getContributors());
        }

        // mailingLists
        if (child.getMailingLists().size() == 0) {
            child.setMailingLists(parent.getMailingLists());
        }

        // Build
        assembleBuildInheritance(child, parent);

        assembleDependencyInheritance(child, parent);

        child.setRepositories(ModelUtils.mergeRepositoryLists(child.getRepositories(), parent.getRepositories()));
        //        child.setPluginRepositories(
        //            ModelUtils.mergeRepositoryLists( child.getPluginRepositories(), parent.getPluginRepositories() )
        // );

        assembleReportingInheritance(child, parent);

        assembleDependencyManagementInheritance(child, parent);

        Properties props = new Properties();
        props.putAll(parent.getProperties());
        props.putAll(child.getProperties());

        child.setProperties(props);
    }