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;
}
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;
}
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);
}
}
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());
}
}
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());
}
}
Aggregations