in maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java [271:345]
private void perform(ReleasePerformRequest performRequest, ReleaseResult result)
throws ReleaseExecutionException, ReleaseFailureException {
// https://issues.apache.org/jira/browse/MRELEASE-1104 because stageRepository is an additional arg
// and only adding at perform stage it's not available during prepare and so not save the not available
// when reloading. save this then change again after load
String additionalArguments =
performRequest.getReleaseDescriptorBuilder().build().getAdditionalArguments();
List<String> specificProfiles = ReleaseUtils.buildReleaseDescriptor(
performRequest.getReleaseDescriptorBuilder())
.getActivateProfiles();
ReleaseDescriptorBuilder builder = loadReleaseDescriptorBuilder(
performRequest.getReleaseDescriptorBuilder(), performRequest.getReleaseManagerListener());
builder.setAdditionalArguments(additionalArguments);
if (specificProfiles != null && !specificProfiles.isEmpty()) {
List<String> allProfiles =
new ArrayList<>(ReleaseUtils.buildReleaseDescriptor(builder).getActivateProfiles());
for (String specificProfile : specificProfiles) {
if (!allProfiles.contains(specificProfile)) {
allProfiles.add(specificProfile);
}
}
builder.setActivateProfiles(allProfiles);
}
ReleaseDescriptor releaseDescriptor = ReleaseUtils.buildReleaseDescriptor(builder);
Strategy releaseStrategy = getStrategy(releaseDescriptor.getReleaseStrategyId());
List<String> performPhases = getGoalPhases(releaseStrategy, "perform");
goalStart(performRequest.getReleaseManagerListener(), "perform", performPhases);
for (String name : performPhases) {
ReleasePhase phase = releasePhases.get(name);
if (phase == null) {
throw new ReleaseExecutionException("Unable to find phase '" + name + "' to execute");
}
phaseStart(performRequest.getReleaseManagerListener(), name);
ReleaseResult phaseResult = null;
try {
if (BooleanUtils.isTrue(performRequest.getDryRun())) {
phaseResult = phase.simulate(
releaseDescriptor,
performRequest.getReleaseEnvironment(),
performRequest.getReactorProjects());
} else {
phaseResult = phase.execute(
releaseDescriptor,
performRequest.getReleaseEnvironment(),
performRequest.getReactorProjects());
}
} finally {
if (result != null && phaseResult != null) {
result.appendOutput(phaseResult.getOutput());
}
}
phaseEnd(performRequest.getReleaseManagerListener());
}
if (BooleanUtils.isNotFalse(performRequest.getClean())) {
// call release:clean so that resume will not be possible anymore after a perform
clean(performRequest);
}
goalEnd(performRequest.getReleaseManagerListener());
}