in maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractMapVersionsPhase.java [120:207]
public ReleaseResult execute(
ReleaseDescriptor releaseDescriptor,
ReleaseEnvironment releaseEnvironment,
List<MavenProject> reactorProjects)
throws ReleaseExecutionException {
ReleaseResult result = new ReleaseResult();
List<String> additionalExcludes = releaseDescriptor.getCheckModificationExcludes();
if (additionalExcludes != null) {
exclusionPatterns.addAll(additionalExcludes);
}
MavenProject rootProject = ReleaseUtil.getRootProject(reactorProjects);
if (releaseDescriptor.isAutoVersionSubmodules() && ArtifactUtils.isSnapshot(rootProject.getVersion())) {
// get the root project
MavenProject project = rootProject;
String projectId = ArtifactUtils.versionlessKey(project.getGroupId(), project.getArtifactId());
String nextVersion = resolveNextVersion(project, projectId, releaseDescriptor, releaseEnvironment);
if (!convertToSnapshot) {
releaseDescriptor.addReleaseVersion(projectId, nextVersion);
} else if (releaseDescriptor.isBranchCreation() && convertToBranch) {
releaseDescriptor.addReleaseVersion(projectId, nextVersion);
} else {
releaseDescriptor.addDevelopmentVersion(projectId, nextVersion);
}
for (MavenProject subProject : reactorProjects) {
String subProjectId = ArtifactUtils.versionlessKey(subProject.getGroupId(), subProject.getArtifactId());
if (convertToSnapshot) {
String subProjectNextVersion = releaseDescriptor.getProjectDevelopmentVersion(subProjectId);
String v;
if (subProjectNextVersion != null) {
v = subProjectNextVersion;
} else if (ArtifactUtils.isSnapshot(subProject.getVersion())) {
v = nextVersion;
} else {
v = subProject.getVersion();
}
if (releaseDescriptor.isBranchCreation() && convertToBranch) {
releaseDescriptor.addReleaseVersion(subProjectId, v);
} else {
releaseDescriptor.addDevelopmentVersion(subProjectId, v);
}
} else {
String subProjectNextVersion = releaseDescriptor.getProjectReleaseVersion(subProjectId);
if (subProjectNextVersion != null) {
releaseDescriptor.addReleaseVersion(subProjectId, subProjectNextVersion);
} else {
releaseDescriptor.addReleaseVersion(subProjectId, nextVersion);
}
}
}
} else {
for (MavenProject project : reactorProjects) {
String projectId = ArtifactUtils.versionlessKey(project.getGroupId(), project.getArtifactId());
boolean isExcludedPathFound = false;
if (project.getFile() != null) {
isExcludedPathFound = exclusionPatterns.stream()
.anyMatch(exclusionPattern -> FileSystems.getDefault()
.getPathMatcher("glob:" + exclusionPattern)
.matches(Paths.get(project.getFile().getPath())));
}
if (!isExcludedPathFound) {
String nextVersion = resolveNextVersion(project, projectId, releaseDescriptor, releaseEnvironment);
if (!convertToSnapshot) {
releaseDescriptor.addReleaseVersion(projectId, nextVersion);
} else if (releaseDescriptor.isBranchCreation() && convertToBranch) {
releaseDescriptor.addReleaseVersion(projectId, nextVersion);
} else {
releaseDescriptor.addDevelopmentVersion(projectId, nextVersion);
}
}
}
}
result.setResultCode(ReleaseResult.SUCCESS);
return result;
}