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