public void writeDescriptor()

in maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGenerator.java [105:195]


    public void writeDescriptor(File destinationFile, PluginToolsRequest request, DescriptorType type)
            throws IOException {
        PluginDescriptor pluginDescriptor = request.getPluginDescriptor();

        if (!destinationFile.getParentFile().exists()) {
            destinationFile.getParentFile().mkdirs();
        }

        try (Writer writer = new OutputStreamWriter(new CachingOutputStream(destinationFile), UTF_8)) {
            XMLWriter w = new PrettyPrintXMLWriter(writer, UTF_8.name(), null);

            final String additionalInfo;
            switch (type) {
                case LIMITED_FOR_HELP_MOJO:
                    additionalInfo = " (for help'mojo with additional elements)";
                    break;
                case XHTML:
                    additionalInfo = " (enhanced XHTML version with additional elements (used for plugin:report))";
                    break;
                default:
                    additionalInfo = "";
                    break;
            }
            w.writeMarkup("\n<!-- Generated by maven-plugin-tools " + getVersion() + additionalInfo + "-->\n\n");

            w.startElement("plugin");

            GeneratorUtils.element(w, "name", pluginDescriptor.getName());

            GeneratorUtils.element(w, "description", pluginDescriptor.getDescription());

            GeneratorUtils.element(w, "groupId", pluginDescriptor.getGroupId());

            GeneratorUtils.element(w, "artifactId", pluginDescriptor.getArtifactId());

            GeneratorUtils.element(w, "version", pluginDescriptor.getVersion());

            GeneratorUtils.element(w, "goalPrefix", pluginDescriptor.getGoalPrefix());

            if (type != DescriptorType.LIMITED_FOR_HELP_MOJO) {
                GeneratorUtils.element(w, "isolatedRealm", String.valueOf(pluginDescriptor.isIsolatedRealm()));

                GeneratorUtils.element(
                        w, "inheritedByDefault", String.valueOf(pluginDescriptor.isInheritedByDefault()));

                if (pluginDescriptor instanceof ExtendedPluginDescriptor) {
                    ExtendedPluginDescriptor extPluginDescriptor = (ExtendedPluginDescriptor) pluginDescriptor;
                    if (StringUtils.isNotBlank(extPluginDescriptor.getRequiredJavaVersion())) {
                        GeneratorUtils.element(w, "requiredJavaVersion", extPluginDescriptor.getRequiredJavaVersion());
                    }
                }
                if (StringUtils.isNotBlank(pluginDescriptor.getRequiredMavenVersion())) {
                    GeneratorUtils.element(w, "requiredMavenVersion", pluginDescriptor.getRequiredMavenVersion());
                }
            }

            w.startElement("mojos");

            final JavadocLinkGenerator javadocLinkGenerator;
            if (request.getInternalJavadocBaseUrl() != null
                    || (request.getExternalJavadocBaseUrls() != null
                            && !request.getExternalJavadocBaseUrls().isEmpty())) {
                javadocLinkGenerator = new JavadocLinkGenerator(
                        request.getInternalJavadocBaseUrl(),
                        request.getInternalJavadocVersion(),
                        request.getExternalJavadocBaseUrls(),
                        request.getSettings());
            } else {
                javadocLinkGenerator = null;
            }
            if (pluginDescriptor.getMojos() != null) {
                List<MojoDescriptor> descriptors = pluginDescriptor.getMojos();

                PluginUtils.sortMojos(descriptors);

                for (MojoDescriptor descriptor : descriptors) {
                    processMojoDescriptor(descriptor, w, type, javadocLinkGenerator);
                }
            }

            w.endElement();

            if (type != DescriptorType.LIMITED_FOR_HELP_MOJO) {
                GeneratorUtils.writeDependencies(w, pluginDescriptor);
            }

            w.endElement();

            writer.flush();
        }
    }