private void writePom()

in maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModelETL.java [176:224]


    private void writePom(
            File pomFile,
            Document document,
            ReleaseDescriptor releaseDescriptor,
            String modelVersion,
            String intro,
            String outtro)
            throws ReleaseExecutionException {
        Element rootElement = document.getRootElement();

        if (releaseDescriptor.isAddSchema()) {
            Namespace pomNamespace = Namespace.getNamespace("", "http://maven.apache.org/POM/" + modelVersion);
            rootElement.setNamespace(pomNamespace);
            Namespace xsiNamespace = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
            rootElement.addNamespaceDeclaration(xsiNamespace);

            if (rootElement.getAttribute("schemaLocation", xsiNamespace) == null) {
                rootElement.setAttribute(
                        "schemaLocation",
                        "http://maven.apache.org/POM/" + modelVersion + " https://maven.apache.org/xsd/maven-"
                                + modelVersion + ".xsd",
                        xsiNamespace);
            }

            // the empty namespace is considered equal to the POM namespace, so match them up to avoid extra xmlns=""
            ElementFilter elementFilter = new ElementFilter(Namespace.getNamespace(""));
            for (Iterator<?> i = rootElement.getDescendants(elementFilter); i.hasNext(); ) {
                Element e = (Element) i.next();
                e.setNamespace(pomNamespace);
            }
        }

        try (Writer writer = WriterFactory.newXmlWriter(pomFile)) {
            if (intro != null) {
                writer.write(intro);
            }

            Format format = Format.getRawFormat();
            format.setLineSeparator(ls);
            XMLOutputter out = new XMLOutputter(format);
            out.output(document.getRootElement(), writer);

            if (outtro != null) {
                writer.write(outtro);
            }
        } catch (IOException e) {
            throw new ReleaseExecutionException("Error writing POM: " + e.getMessage(), e);
        }
    }