use of org.apache.maven.shared.release.phase.ReleasePhase in project maven-release by apache.
the class DefaultReleaseManager method branch.
@Override
public void branch(ReleaseBranchRequest branchRequest) throws ReleaseExecutionException, ReleaseFailureException {
final ReleaseDescriptorBuilder builder = branchRequest.getReleaseDescriptorBuilder();
ReleaseUtils.copyPropertiesToReleaseDescriptor(branchRequest.getUserProperties(), new ReleaseDescriptorBuilder() {
public ReleaseDescriptorBuilder addDevelopmentVersion(String key, String value) {
builder.addDevelopmentVersion(key, value);
return this;
}
public ReleaseDescriptorBuilder addReleaseVersion(String key, String value) {
builder.addReleaseVersion(key, value);
return this;
}
});
ReleaseDescriptor releaseDescriptor = loadReleaseDescriptor(builder, branchRequest.getReleaseManagerListener());
boolean dryRun = BooleanUtils.isTrue(branchRequest.getDryRun());
Strategy releaseStrategy = getStrategy(releaseDescriptor.getReleaseStrategyId());
List<String> branchPhases = getGoalPhases(releaseStrategy, "branch");
goalStart(branchRequest.getReleaseManagerListener(), "branch", branchPhases);
for (String name : branchPhases) {
ReleasePhase phase = releasePhases.get(name);
if (phase == null) {
throw new ReleaseExecutionException("Unable to find phase '" + name + "' to execute");
}
updateListener(branchRequest.getReleaseManagerListener(), name, PHASE_START);
if (dryRun) {
phase.simulate(releaseDescriptor, branchRequest.getReleaseEnvironment(), branchRequest.getReactorProjects());
} else // getDryRun is null or FALSE
{
phase.execute(releaseDescriptor, branchRequest.getReleaseEnvironment(), branchRequest.getReactorProjects());
}
updateListener(branchRequest.getReleaseManagerListener(), name, PHASE_END);
}
if (!dryRun) {
clean(branchRequest);
}
updateListener(branchRequest.getReleaseManagerListener(), "branch", GOAL_END);
}
use of org.apache.maven.shared.release.phase.ReleasePhase in project maven-release by apache.
the class DefaultReleaseManager method rollback.
@Override
public void rollback(ReleaseRollbackRequest rollbackRequest) throws ReleaseExecutionException, ReleaseFailureException {
ReleaseDescriptor releaseDescriptor = loadReleaseDescriptor(rollbackRequest.getReleaseDescriptorBuilder(), null);
Strategy releaseStrategy = getStrategy(releaseDescriptor.getReleaseStrategyId());
List<String> rollbackPhases = getGoalPhases(releaseStrategy, "rollback");
goalStart(rollbackRequest.getReleaseManagerListener(), "rollback", rollbackPhases);
for (String name : rollbackPhases) {
ReleasePhase phase = releasePhases.get(name);
if (phase == null) {
throw new ReleaseExecutionException("Unable to find phase '" + name + "' to execute");
}
updateListener(rollbackRequest.getReleaseManagerListener(), name, PHASE_START);
phase.execute(releaseDescriptor, rollbackRequest.getReleaseEnvironment(), rollbackRequest.getReactorProjects());
updateListener(rollbackRequest.getReleaseManagerListener(), name, PHASE_END);
}
// call release:clean so that resume will not be possible anymore after a rollback
clean(rollbackRequest);
updateListener(rollbackRequest.getReleaseManagerListener(), "rollback", GOAL_END);
}
use of org.apache.maven.shared.release.phase.ReleasePhase in project maven-release by apache.
the class DefaultReleaseManager method prepare.
private void prepare(ReleasePrepareRequest prepareRequest, ReleaseResult result) throws ReleaseExecutionException, ReleaseFailureException {
final ReleaseDescriptorBuilder builder = prepareRequest.getReleaseDescriptorBuilder();
// Create a config containing values from the session properties (ie command line properties with cli).
ReleaseUtils.copyPropertiesToReleaseDescriptor(prepareRequest.getUserProperties(), new ReleaseDescriptorBuilder() {
public ReleaseDescriptorBuilder addDevelopmentVersion(String key, String value) {
builder.addDevelopmentVersion(key, value);
return this;
}
public ReleaseDescriptorBuilder addReleaseVersion(String key, String value) {
builder.addReleaseVersion(key, value);
return this;
}
public ReleaseDescriptorBuilder addDependencyReleaseVersion(String dependencyKey, String version) {
builder.addDependencyReleaseVersion(dependencyKey, version);
return this;
}
public ReleaseDescriptorBuilder addDependencyDevelopmentVersion(String dependencyKey, String version) {
builder.addDependencyDevelopmentVersion(dependencyKey, version);
return this;
}
});
BuilderReleaseDescriptor config;
if (BooleanUtils.isNotFalse(prepareRequest.getResume())) {
config = loadReleaseDescriptor(builder, prepareRequest.getReleaseManagerListener());
} else {
config = ReleaseUtils.buildReleaseDescriptor(builder);
}
Strategy releaseStrategy = getStrategy(config.getReleaseStrategyId());
List<String> preparePhases = getGoalPhases(releaseStrategy, "prepare");
goalStart(prepareRequest.getReleaseManagerListener(), "prepare", preparePhases);
// Later, it would be a good idea to introduce a proper workflow tool so that the release can be made up of a
// more flexible set of steps.
String completedPhase = config.getCompletedPhase();
int index = preparePhases.indexOf(completedPhase);
for (int idx = 0; idx <= index; idx++) {
updateListener(prepareRequest.getReleaseManagerListener(), preparePhases.get(idx), PHASE_SKIP);
}
if (index == preparePhases.size() - 1) {
logInfo(result, "Release preparation already completed. You can now continue with release:perform, " + "or start again using the -Dresume=false flag");
} else if (index >= 0) {
logInfo(result, "Resuming release from phase '" + preparePhases.get(index + 1) + "'");
}
// start from next phase
for (int i = index + 1; i < preparePhases.size(); i++) {
String name = preparePhases.get(i);
ReleasePhase phase = releasePhases.get(name);
if (phase == null) {
throw new ReleaseExecutionException("Unable to find phase '" + name + "' to execute");
}
updateListener(prepareRequest.getReleaseManagerListener(), name, PHASE_START);
ReleaseResult phaseResult = null;
try {
if (BooleanUtils.isTrue(prepareRequest.getDryRun())) {
phaseResult = phase.simulate(config, prepareRequest.getReleaseEnvironment(), prepareRequest.getReactorProjects());
} else {
phaseResult = phase.execute(config, prepareRequest.getReleaseEnvironment(), prepareRequest.getReactorProjects());
}
} finally {
if (result != null && phaseResult != null) {
result.appendOutput(phaseResult.getOutput());
}
}
config.setCompletedPhase(name);
try {
configStore.get().write(config);
} catch (ReleaseDescriptorStoreException e) {
// TODO: rollback?
throw new ReleaseExecutionException("Error writing release properties after completing phase", e);
}
updateListener(prepareRequest.getReleaseManagerListener(), name, PHASE_END);
}
updateListener(prepareRequest.getReleaseManagerListener(), "prepare", GOAL_END);
}
use of org.apache.maven.shared.release.phase.ReleasePhase in project maven-release by apache.
the class DefaultReleaseManager method updateVersions.
@Override
public void updateVersions(ReleaseUpdateVersionsRequest updateVersionsRequest) throws ReleaseExecutionException, ReleaseFailureException {
final ReleaseDescriptorBuilder builder = updateVersionsRequest.getReleaseDescriptorBuilder();
// Create a config containing values from the session properties (ie command line properties with cli).
ReleaseUtils.copyPropertiesToReleaseDescriptor(updateVersionsRequest.getUserProperties(), new ReleaseDescriptorBuilder() {
public ReleaseDescriptorBuilder addDevelopmentVersion(String key, String value) {
builder.addDevelopmentVersion(key, value);
return this;
}
public ReleaseDescriptorBuilder addReleaseVersion(String key, String value) {
builder.addReleaseVersion(key, value);
return this;
}
});
ReleaseDescriptor releaseDescriptor = loadReleaseDescriptor(builder, updateVersionsRequest.getReleaseManagerListener());
Strategy releaseStrategy = getStrategy(releaseDescriptor.getReleaseStrategyId());
List<String> updateVersionsPhases = getGoalPhases(releaseStrategy, "updateVersions");
goalStart(updateVersionsRequest.getReleaseManagerListener(), "updateVersions", updateVersionsPhases);
for (String name : updateVersionsPhases) {
ReleasePhase phase = releasePhases.get(name);
if (phase == null) {
throw new ReleaseExecutionException("Unable to find phase '" + name + "' to execute");
}
updateListener(updateVersionsRequest.getReleaseManagerListener(), name, PHASE_START);
phase.execute(releaseDescriptor, updateVersionsRequest.getReleaseEnvironment(), updateVersionsRequest.getReactorProjects());
updateListener(updateVersionsRequest.getReleaseManagerListener(), name, PHASE_END);
}
clean(updateVersionsRequest);
updateListener(updateVersionsRequest.getReleaseManagerListener(), "updateVersions", GOAL_END);
}
use of org.apache.maven.shared.release.phase.ReleasePhase in project maven-release by apache.
the class DefaultReleaseManager method clean.
@Override
public void clean(ReleaseCleanRequest cleanRequest) throws ReleaseFailureException {
updateListener(cleanRequest.getReleaseManagerListener(), "cleanup", PHASE_START);
logger.info("Cleaning up after release...");
ReleaseDescriptor releaseDescriptor = ReleaseUtils.buildReleaseDescriptor(cleanRequest.getReleaseDescriptorBuilder());
configStore.get().delete(releaseDescriptor);
Strategy releaseStrategy = getStrategy(releaseDescriptor.getReleaseStrategyId());
Set<String> phases = new LinkedHashSet<>();
phases.addAll(getGoalPhases(releaseStrategy, "prepare"));
phases.addAll(getGoalPhases(releaseStrategy, "branch"));
for (String name : phases) {
ReleasePhase phase = releasePhases.get(name);
if (phase instanceof ResourceGenerator) {
((ResourceGenerator) phase).clean(cleanRequest.getReactorProjects());
}
}
updateListener(cleanRequest.getReleaseManagerListener(), "cleanup", PHASE_END);
}
Aggregations