public ReleaseResult execute()

in maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractInputVariablesPhase.java [135:232]


    public ReleaseResult execute(
            ReleaseDescriptor releaseDescriptor,
            ReleaseEnvironment releaseEnvironment,
            List<MavenProject> reactorProjects)
            throws ReleaseExecutionException {
        ReleaseResult result = new ReleaseResult();

        // get the root project
        MavenProject project = ReleaseUtil.getRootProject(reactorProjects);

        String tag = releaseDescriptor.getScmReleaseLabel();

        if (tag == null) {
            // Must get default version from mapped versions, as the project will be the incorrect snapshot
            String key = ArtifactUtils.versionlessKey(project.getGroupId(), project.getArtifactId());
            String releaseVersion = releaseDescriptor.getProjectReleaseVersion(key);
            if (releaseVersion == null) {
                throw new ReleaseExecutionException("Project tag cannot be selected if version is not yet mapped");
            }

            String suggestedName;
            String scmTagNameFormat = releaseDescriptor.getScmTagNameFormat();
            if (releaseDescriptor.getProjectNamingPolicyId() != null) {
                try {
                    suggestedName =
                            resolveSuggestedName(releaseDescriptor.getProjectNamingPolicyId(), releaseVersion, project);
                } catch (PolicyException e) {
                    throw new ReleaseExecutionException(e.getMessage(), e);
                }
            } else if (scmTagNameFormat != null) {
                Interpolator interpolator = new StringSearchInterpolator("@{", "}");
                List<String> possiblePrefixes = Arrays.asList("project", "pom");
                Properties values = new Properties();
                values.setProperty("artifactId", project.getArtifactId());
                values.setProperty("groupId", project.getGroupId());
                values.setProperty("version", releaseVersion);
                interpolator.addValueSource(new PrefixedPropertiesValueSource(possiblePrefixes, values, true));
                RecursionInterceptor recursionInterceptor = new PrefixAwareRecursionInterceptor(possiblePrefixes);
                try {
                    suggestedName = interpolator.interpolate(scmTagNameFormat, recursionInterceptor);
                } catch (InterpolationException e) {
                    throw new ReleaseExecutionException(
                            "Could not interpolate specified tag name format: " + scmTagNameFormat, e);
                }
            } else {
                try {
                    suggestedName = resolveSuggestedName(defaultNamingPolicy, releaseVersion, project);
                } catch (PolicyException e) {
                    throw new ReleaseExecutionException(e.getMessage(), e);
                }
            }

            ScmProvider provider;
            try {
                provider = getScmProvider(releaseDescriptor, releaseEnvironment);
            } catch (ReleaseScmRepositoryException e) {
                throw new ReleaseExecutionException(
                        "No scm provider can be found for url: " + releaseDescriptor.getScmSourceUrl(), e);
            }

            suggestedName = provider.sanitizeTagName(suggestedName);

            if (releaseDescriptor.isInteractive()) {
                try {
                    if (branchOperation) {
                        tag = prompter.get()
                                .prompt("What is the branch name for \"" + project.getName() + "\"? ("
                                        + buffer().project(project.getArtifactId()) + ")");
                        if (tag == null || tag.isEmpty()) {
                            throw new ReleaseExecutionException("No branch name was given.");
                        }
                    } else {
                        tag = prompter.get()
                                .prompt(
                                        "What is the SCM release tag or label for \"" + project.getName() + "\"? ("
                                                + buffer().project(project.getArtifactId()) + ")",
                                        suggestedName);
                    }
                } catch (PrompterException e) {
                    throw new ReleaseExecutionException(
                            "Error reading version from input handler: " + e.getMessage(), e);
                }
            } else if (suggestedName == null) {
                if (isBranchOperation()) {
                    throw new ReleaseExecutionException("No branch name was given.");
                } else {
                    throw new ReleaseExecutionException("No tag name was given.");
                }
            } else {
                tag = suggestedName;
            }
            releaseDescriptor.setScmReleaseLabel(tag);
        }

        result.setResultCode(ReleaseResult.SUCCESS);

        return result;
    }