private Model createReleaseModel()

in maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhase.java [216:291]


    private Model createReleaseModel(
            MavenProject project,
            ReleaseDescriptor releaseDescriptor,
            ReleaseEnvironment releaseEnvironment,
            ReleaseResult result)
            throws ReleaseFailureException, ReleaseExecutionException {
        MavenProject releaseProject = project.clone();
        Model releaseModel = releaseProject.getModel();

        // the release POM should reflect bits of these which were injected at build time...
        // we don't need these polluting the POM.
        releaseModel.setParent(null);
        releaseModel.setProfiles(Collections.emptyList());
        releaseModel.setDependencyManagement(null);
        releaseProject.getBuild().setPluginManagement(null);

        // update project version
        String projectVersion = releaseModel.getVersion();
        String releaseVersion = getNextVersion(releaseDescriptor, project.getGroupId(), project.getArtifactId());
        releaseModel.setVersion(releaseVersion);

        String originalFinalName = releaseModel.getBuild().getFinalName();
        // update final name if implicit
        if (!FINALNAME_EXPRESSION.equals(originalFinalName)) {
            originalFinalName = findOriginalFinalName(project);

            if (originalFinalName == null) {
                // as defined in super-pom
                originalFinalName = FINALNAME_EXPRESSION;
            }
        }

        // make finalName always explicit
        String finalName = ReleaseUtil.interpolate(originalFinalName, releaseModel);

        // still required?
        if (finalName.contains(Artifact.SNAPSHOT_VERSION)) {
            throw new ReleaseFailureException(
                    "Cannot reliably adjust the finalName of project: " + releaseProject.getId());
        }
        releaseModel.getBuild().setFinalName(finalName);

        // update scm
        Scm scm = releaseModel.getScm();

        if (scm != null) {
            ScmRepository scmRepository = getScmRepository(releaseDescriptor, releaseEnvironment);
            ScmTranslator scmTranslator = getScmTranslator(scmRepository);

            if (scmTranslator != null) {
                releaseModel.setScm(createReleaseScm(releaseModel.getScm(), scmTranslator, releaseDescriptor));
            } else {
                String message = "No SCM translator found - skipping rewrite";

                result.appendDebug(message);

                getLogger().debug(message);
            }
        }

        // rewrite dependencies
        releaseModel.setDependencies(createReleaseDependencies(releaseDescriptor, releaseProject));

        // rewrite plugins
        releaseModel.getBuild().setPlugins(createReleasePlugins(releaseDescriptor, releaseProject));

        // rewrite reports
        releaseModel.getReporting().setPlugins(createReleaseReportPlugins(releaseDescriptor, releaseProject));

        // rewrite extensions
        releaseModel.getBuild().setExtensions(createReleaseExtensions(releaseDescriptor, releaseProject));

        unalignFromBaseDirectory(releaseModel, project.getBasedir());

        return releaseModel;
    }