Search in sources :

Example 1 with ReleasePhase

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);
}
Also used : Strategy(org.apache.maven.shared.release.strategy.Strategy) ReleasePhase(org.apache.maven.shared.release.phase.ReleasePhase) BuilderReleaseDescriptor(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder.BuilderReleaseDescriptor) ReleaseDescriptor(org.apache.maven.shared.release.config.ReleaseDescriptor) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder)

Example 2 with ReleasePhase

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);
}
Also used : Strategy(org.apache.maven.shared.release.strategy.Strategy) ReleasePhase(org.apache.maven.shared.release.phase.ReleasePhase) BuilderReleaseDescriptor(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder.BuilderReleaseDescriptor) ReleaseDescriptor(org.apache.maven.shared.release.config.ReleaseDescriptor)

Example 3 with ReleasePhase

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);
}
Also used : ReleaseDescriptorStoreException(org.apache.maven.shared.release.config.ReleaseDescriptorStoreException) Strategy(org.apache.maven.shared.release.strategy.Strategy) ReleasePhase(org.apache.maven.shared.release.phase.ReleasePhase) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) BuilderReleaseDescriptor(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder.BuilderReleaseDescriptor)

Example 4 with ReleasePhase

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);
}
Also used : Strategy(org.apache.maven.shared.release.strategy.Strategy) ReleasePhase(org.apache.maven.shared.release.phase.ReleasePhase) BuilderReleaseDescriptor(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder.BuilderReleaseDescriptor) ReleaseDescriptor(org.apache.maven.shared.release.config.ReleaseDescriptor) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder)

Example 5 with ReleasePhase

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);
}
Also used : LinkedHashSet(java.util.LinkedHashSet) ResourceGenerator(org.apache.maven.shared.release.phase.ResourceGenerator) Strategy(org.apache.maven.shared.release.strategy.Strategy) ReleasePhase(org.apache.maven.shared.release.phase.ReleasePhase) BuilderReleaseDescriptor(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder.BuilderReleaseDescriptor) ReleaseDescriptor(org.apache.maven.shared.release.config.ReleaseDescriptor)

Aggregations

BuilderReleaseDescriptor (org.apache.maven.shared.release.config.ReleaseDescriptorBuilder.BuilderReleaseDescriptor)6 ReleasePhase (org.apache.maven.shared.release.phase.ReleasePhase)6 Strategy (org.apache.maven.shared.release.strategy.Strategy)6 ReleaseDescriptor (org.apache.maven.shared.release.config.ReleaseDescriptor)5 ReleaseDescriptorBuilder (org.apache.maven.shared.release.config.ReleaseDescriptorBuilder)4 ArrayList (java.util.ArrayList)1 LinkedHashSet (java.util.LinkedHashSet)1 ReleaseDescriptorStoreException (org.apache.maven.shared.release.config.ReleaseDescriptorStoreException)1 ResourceGenerator (org.apache.maven.shared.release.phase.ResourceGenerator)1