private void writeReleases()

in src/main/java/org/apache/maven/plugin/doap/DoapMojo.java [1288:1385]


    private void writeReleases(XMLWriter writer, MavenProject project) throws MojoExecutionException {
        Artifact artifact = artifactFactory.createArtifact(
                project.getGroupId(), project.getArtifactId(), project.getVersion(), null, project.getPackaging());
        RepositoryMetadata metadata = new ArtifactRepositoryMetadata(artifact);

        for (ArtifactRepository repo : remoteRepositories) {
            if (repo.isBlacklisted()) {
                continue;
            }
            if (repo.getSnapshots().isEnabled()) {
                continue;
            }
            if (repo.getReleases().isEnabled()) {
                try {
                    repositoryMetadataManager.resolveAlways(metadata, localRepository, repo);
                    break;
                } catch (RepositoryMetadataResolutionException e) {
                    throw new MojoExecutionException(
                            metadata.extendedToString() + " could not be retrieved from repositories due to an error: "
                                    + e.getMessage(),
                            e);
                }
            }
        }

        if (metadata.getMetadata().getVersioning() == null) {
            messages.getWarnMessages()
                    .add("No versioning was found for " + artifact.getGroupId() + ":" + artifact.getArtifactId()
                            + ". Ignored DOAP <release/> tag.");
            return;
        }

        List<String> versions = metadata.getMetadata().getVersioning().getVersions();

        // Recent releases in first
        Collections.reverse(versions);
        boolean addComment = false;
        int i = 0;
        for (String version : versions) {
            if (!addComment) {
                DoapUtil.writeComment(writer, "Project releases.");
                addComment = true;
            }

            DoapUtil.writeStartElement(writer, doapOptions.getXmlnsPrefix(), "release");
            DoapUtil.writeStartElement(writer, doapOptions.getXmlnsPrefix(), "Version");

            DoapUtil.writeStartElement(writer, doapOptions.getXmlnsPrefix(), "name");
            if (version.equals(metadata.getMetadata().getVersioning().getRelease())) {
                writer.writeText("Latest stable release");
            } else {
                writer.writeText(project.getName() + " - " + version);
            }
            writer.endElement(); // name

            DoapUtil.writeElement(writer, doapOptions.getXmlnsPrefix(), "revision", version);

            // list all file release from all remote repos
            for (ArtifactRepository repo : remoteRepositories) {
                Artifact artifactRelease = artifactFactory.createArtifact(
                        project.getGroupId(), project.getArtifactId(), version, null, project.getPackaging());

                if (artifactRelease == null) {
                    continue;
                }

                String fileRelease = repo.getUrl() + "/" + repo.pathOf(artifactRelease);
                try {
                    DoapUtil.fetchURL(settings, new URL(fileRelease));
                } catch (IOException e) {
                    getLog().debug("IOException :" + e.getMessage());
                    continue;
                }
                DoapUtil.writeElement(writer, doapOptions.getXmlnsPrefix(), "file-release", fileRelease);

                Date releaseDate = null;
                try {
                    releaseDate = REPOSITORY_DATE_FORMAT.parse(
                            metadata.getMetadata().getVersioning().getLastUpdated());
                } catch (ParseException e) {
                    getLog().error("Unable to parse date '"
                            + metadata.getMetadata().getVersioning().getLastUpdated() + "'");
                    continue;
                }

                // See MDOAP-11
                if (i == 0) {
                    DoapUtil.writeElement(
                            writer, doapOptions.getXmlnsPrefix(), "created", DOAP_DATE_FORMAT.format(releaseDate));
                }
            }

            writer.endElement(); // Version
            writer.endElement(); // release

            i++;
        }
    }