public ReleaseResult execute()

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;
    }