public void execute()

in src/main/java/org/apache/maven/plugins/changes/announcement/AnnouncementMojo.java [441:522]


    public void execute() throws MojoExecutionException {
        // Run only at the execution root
        if (runOnlyAtExecutionRoot && !isThisTheExecutionRoot()) {
            getLog().info("Skipping the announcement generation in this project because it's not the Execution Root");
        } else {
            if (issueManagementSystems == null) {
                issueManagementSystems = new ArrayList<>();
            }

            if (issueManagementSystems.isEmpty()) {
                issueManagementSystems.add(CHANGES_XML);
            }

            // Fetch releases from the configured issue management systems
            List<Release> releases = null;
            if (issueManagementSystems.contains(CHANGES_XML)) {
                if (getXmlPath().exists()) {
                    ChangesXML changesXML = new ChangesXML(getXmlPath(), getLog());
                    List<Release> changesReleases = changesXML.getReleaseList();
                    releases = ReleaseUtils.mergeReleases(null, changesReleases);
                    getLog().info("Including issues from file " + getXmlPath() + " in announcement...");
                } else {
                    getLog().warn("changes.xml file " + getXmlPath().getAbsolutePath() + " does not exist.");
                }
            }

            if (issueManagementSystems.contains(JIRA)) {
                String message = ProjectUtils.validateIssueManagement(project, JIRA, "JIRA announcement");
                if (message == null) {
                    List<Release> jiraReleases = getJiraReleases();
                    releases = ReleaseUtils.mergeReleases(releases, jiraReleases);
                    getLog().info("Including issues from JIRA in announcement...");
                } else {
                    throw new MojoExecutionException(
                            "Something is wrong with the Issue Management section. " + message);
                }
            }

            if (issueManagementSystems.contains(TRAC)) {
                getLog().warn(
                                "Trac integration is prepared for removal in next major version due to lack of maintainers");
                String message = ProjectUtils.validateIssueManagement(project, TRAC, "Trac announcement");
                if (message == null) {
                    List<Release> tracReleases = getTracReleases();
                    releases = ReleaseUtils.mergeReleases(releases, tracReleases);
                    getLog().info("Including issues from Trac in announcement...");
                } else {
                    throw new MojoExecutionException(
                            "Something is wrong with the Issue Management section. " + message);
                }
            }

            if (issueManagementSystems.contains(GIT_HUB)) {
                String message = ProjectUtils.validateIssueManagement(project, GIT_HUB, "GitHub announcement");
                if (message == null) {
                    List<Release> gitHubReleases = getGitHubReleases();
                    releases = ReleaseUtils.mergeReleases(releases, gitHubReleases);
                    getLog().info("Including issues from GitHub in announcement...");
                } else {
                    throw new MojoExecutionException(
                            "Something is wrong with the Issue Management section. " + message);
                }
            }

            // @todo Add more issue management systems here.

            // Follow these steps:
            // 1. Add a constant for the name of the issue management system
            // 2. Add the @parameters needed to configure the issue management system
            // 3. Add a protected List get<IMSname>Releases() method that retrieves a list of releases
            // 4. Merge those releases into the "releases" variable
            // For help with these steps, you can have a look at how this has been done for JIRA or Trac

            // Generate the report
            if (releases == null || releases.isEmpty()) {
                throw new MojoExecutionException(
                        "No releases found in any of the " + "configured issue management systems.");
            } else {
                doGenerate(releases);
            }
        }
    }