use of org.apache.maven.shared.release.config.ReleaseDescriptorBuilder 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.config.ReleaseDescriptorBuilder 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.config.ReleaseDescriptorBuilder in project maven-release by apache.
the class DefaultReleaseManager method loadReleaseDescriptorBuilder.
private ReleaseDescriptorBuilder loadReleaseDescriptorBuilder(ReleaseDescriptorBuilder builder, ReleaseManagerListener listener) throws ReleaseExecutionException {
try {
updateListener(listener, "verify-release-configuration", PHASE_START);
ReleaseDescriptorBuilder result = configStore.get().read(builder);
updateListener(listener, "verify-release-configuration", PHASE_END);
return result;
} catch (ReleaseDescriptorStoreException e) {
updateListener(listener, e.getMessage(), ERROR);
throw new ReleaseExecutionException("Error reading stored configuration: " + e.getMessage(), e);
}
}
use of org.apache.maven.shared.release.config.ReleaseDescriptorBuilder 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.config.ReleaseDescriptorBuilder in project maven-release by apache.
the class AbstractEditModeRewritingReleasePhaseTestCase method testRewriteBasicPomWithEditModeException.
@Test
public void testRewriteBasicPomWithEditModeException() throws Exception {
// prepare
List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
ReleaseDescriptorBuilder builder = createDescriptorFromProjects(reactorProjects, "basic-pom");
builder.setScmUseEditMode(true);
mapNextVersion(builder, "groupId:artifactId");
ScmProvider scmProviderMock = mock(ScmProvider.class);
when(scmProviderMock.edit(isA(ScmRepository.class), isA(ScmFileSet.class))).thenThrow(new ScmException("..."));
ScmManagerStub scmManager = new ScmManagerStub();
DefaultScmRepositoryConfigurator configurator = (DefaultScmRepositoryConfigurator) lookup(ScmRepositoryConfigurator.class, "default");
configurator.setScmManager(scmManager);
scmManager.setScmProvider(scmProviderMock);
// execute
try {
phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
fail("Should have thrown an exception");
} catch (ReleaseExecutionException e) {
assertEquals("Check cause", ScmException.class, e.getCause().getClass());
}
// verify
verify(scmProviderMock).edit(isA(ScmRepository.class), isA(ScmFileSet.class));
verifyNoMoreInteractions(scmProviderMock);
}
Aggregations