Search in sources :

Example 1 with ReleaseScmRepositoryException

use of org.apache.maven.shared.release.scm.ReleaseScmRepositoryException in project maven-release by apache.

the class AbstractCheckPomPhase method execute.

@Override
public ReleaseResult execute(ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List<MavenProject> reactorProjects) throws ReleaseExecutionException, ReleaseFailureException {
    ReleaseResult result = new ReleaseResult();
    // Currently, we don't deal with multiple SCM locations in a multiproject
    if (scmRequired) {
        if (StringUtils.isEmpty(releaseDescriptor.getScmSourceUrl())) {
            throw new ReleaseFailureException("Missing required setting: scm connection or developerConnection must be specified.");
        }
        try {
            scmRepositoryConfigurator.getConfiguredRepository(releaseDescriptor, releaseEnvironment.getSettings());
        } catch (ScmRepositoryException e) {
            throw new ReleaseScmRepositoryException(e.getMessage(), e.getValidationMessages());
        } catch (NoSuchScmProviderException e) {
            throw new ReleaseFailureException("The provider given in the SCM URL could not be found: " + e.getMessage());
        }
    }
    boolean containsSnapshotProjects = false;
    for (MavenProject project : reactorProjects) {
        if (ArtifactUtils.isSnapshot(project.getVersion())) {
            containsSnapshotProjects = true;
            break;
        }
    }
    if (snapshotsRequired && !containsSnapshotProjects && !releaseDescriptor.isBranchCreation()) {
        throw new ReleaseFailureException("You don't have a SNAPSHOT project in the reactor projects list.");
    }
    result.setResultCode(ReleaseResult.SUCCESS);
    return result;
}
Also used : ScmRepositoryException(org.apache.maven.scm.repository.ScmRepositoryException) ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) ReleaseResult(org.apache.maven.shared.release.ReleaseResult) MavenProject(org.apache.maven.project.MavenProject) ReleaseFailureException(org.apache.maven.shared.release.ReleaseFailureException) NoSuchScmProviderException(org.apache.maven.scm.manager.NoSuchScmProviderException)

Example 2 with ReleaseScmRepositoryException

use of org.apache.maven.shared.release.scm.ReleaseScmRepositoryException in project maven-release by apache.

the class AbstractInputVariablesPhase method execute.

@Override
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() + "\"? (" + project.getGroupId() + ":" + project.getArtifactId() + ")");
                    if (StringUtils.isEmpty(tag)) {
                        throw new ReleaseExecutionException("No branch name was given.");
                    }
                } else {
                    tag = prompter.get().prompt("What is the SCM release tag or label for \"" + project.getName() + "\"? (" + project.getGroupId() + ":" + 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;
}
Also used : ScmProvider(org.apache.maven.scm.provider.ScmProvider) PrompterException(org.codehaus.plexus.components.interactivity.PrompterException) ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) ReleaseResult(org.apache.maven.shared.release.ReleaseResult) StringSearchInterpolator(org.codehaus.plexus.interpolation.StringSearchInterpolator) PrefixedPropertiesValueSource(org.codehaus.plexus.interpolation.PrefixedPropertiesValueSource) InterpolationException(org.codehaus.plexus.interpolation.InterpolationException) Properties(java.util.Properties) ReleaseExecutionException(org.apache.maven.shared.release.ReleaseExecutionException) MavenProject(org.apache.maven.project.MavenProject) PolicyException(org.apache.maven.shared.release.policy.PolicyException) PrefixAwareRecursionInterceptor(org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor) RecursionInterceptor(org.codehaus.plexus.interpolation.RecursionInterceptor) Interpolator(org.codehaus.plexus.interpolation.Interpolator) StringSearchInterpolator(org.codehaus.plexus.interpolation.StringSearchInterpolator) List(java.util.List) PrefixAwareRecursionInterceptor(org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor)

Example 3 with ReleaseScmRepositoryException

use of org.apache.maven.shared.release.scm.ReleaseScmRepositoryException in project maven-release by apache.

the class CheckPomPhaseTest method testGetInvalidUrl.

@Test
public void testGetInvalidUrl() throws Exception {
    ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder();
    builder.setScmSourceUrl("scm:svn:");
    MavenProject project = createProject("1.0-SNAPSHOT");
    try {
        phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), Collections.singletonList(project));
        fail("Should have thrown an exception");
    } catch (ReleaseScmRepositoryException e) {
        assertTrue(true);
    }
}
Also used : ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) MavenProject(org.apache.maven.project.MavenProject) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) Test(org.junit.Test)

Example 4 with ReleaseScmRepositoryException

use of org.apache.maven.shared.release.scm.ReleaseScmRepositoryException in project maven-release by apache.

the class AbstractRewritingReleasePhaseTestCase method testRewriteBasicPomWithScmRepoException.

@Test
public void testRewriteBasicPomWithScmRepoException() throws Exception {
    // prepare
    List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
    ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
    builder.setScmUseEditMode(true);
    builder.setScmSourceUrl("scm:svn:fail");
    mapNextVersion(builder, "groupId:artifactId");
    ScmManager scmManager = lookup(ScmManager.class);
    if (scmManager instanceof ScmManagerStub) {
        ((ScmManagerStub) scmManager).setException(new ScmRepositoryException("..."));
    }
    try {
        phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
        fail("Should have thrown an exception");
    } catch (ReleaseScmRepositoryException e) {
        assertNull("Check no additional cause", e.getCause());
    }
}
Also used : ScmRepositoryException(org.apache.maven.scm.repository.ScmRepositoryException) ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) MavenProject(org.apache.maven.project.MavenProject) ScmManager(org.apache.maven.scm.manager.ScmManager) ScmManagerStub(org.apache.maven.shared.release.stubs.ScmManagerStub) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) Test(org.junit.Test)

Example 5 with ReleaseScmRepositoryException

use of org.apache.maven.shared.release.scm.ReleaseScmRepositoryException in project maven-release by apache.

the class ScmCommitPreparationPhaseTest method testScmRepositoryExceptionThrown.

@Test
public void testScmRepositoryExceptionThrown() throws Exception {
    // prepare
    List<MavenProject> reactorProjects = createReactorProjects();
    ReleaseDescriptorBuilder builder = createReleaseDescriptorBuilder();
    ScmManagerStub scmManagerStub = (ScmManagerStub) lookup(ScmManager.class);
    scmManagerStub.setException(new ScmRepositoryException("..."));
    // execute
    try {
        phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
        fail("Status check should have failed");
    } catch (ReleaseScmRepositoryException e) {
        // verify
        assertNull("Check no additional cause", e.getCause());
    }
}
Also used : ScmRepositoryException(org.apache.maven.scm.repository.ScmRepositoryException) ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) MavenProject(org.apache.maven.project.MavenProject) ScmManager(org.apache.maven.scm.manager.ScmManager) ScmManagerStub(org.apache.maven.shared.release.stubs.ScmManagerStub) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) Test(org.junit.Test)

Aggregations

ReleaseScmRepositoryException (org.apache.maven.shared.release.scm.ReleaseScmRepositoryException)17 ScmRepositoryException (org.apache.maven.scm.repository.ScmRepositoryException)15 MavenProject (org.apache.maven.project.MavenProject)10 NoSuchScmProviderException (org.apache.maven.scm.manager.NoSuchScmProviderException)9 ScmProvider (org.apache.maven.scm.provider.ScmProvider)9 ReleaseExecutionException (org.apache.maven.shared.release.ReleaseExecutionException)9 File (java.io.File)8 ScmRepository (org.apache.maven.scm.repository.ScmRepository)8 ScmFileSet (org.apache.maven.scm.ScmFileSet)7 ReleaseResult (org.apache.maven.shared.release.ReleaseResult)7 ReleaseDescriptorBuilder (org.apache.maven.shared.release.config.ReleaseDescriptorBuilder)7 DefaultReleaseEnvironment (org.apache.maven.shared.release.env.DefaultReleaseEnvironment)7 Test (org.junit.Test)7 ScmManager (org.apache.maven.scm.manager.ScmManager)6 ScmManagerStub (org.apache.maven.shared.release.stubs.ScmManagerStub)6 ScmException (org.apache.maven.scm.ScmException)5 ReleaseScmCommandException (org.apache.maven.shared.release.scm.ReleaseScmCommandException)5 ReleaseDescriptor (org.apache.maven.shared.release.config.ReleaseDescriptor)3 IOException (java.io.IOException)2 CommandParameters (org.apache.maven.scm.CommandParameters)2