public static void write()

in src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorWriter.java [71:154]


    public static void write(ModuleDescriptor md, File output, PomWriterOptions options)
            throws IOException {
        LineNumberReader in;
        if (options.getTemplate() == null) {
            in = new LineNumberReader(new InputStreamReader(
                    PomModuleDescriptorWriter.class.getResourceAsStream("pom.template")));
        } else {
            in = new LineNumberReader(new InputStreamReader(new FileInputStream(
                    options.getTemplate())));
        }

        if (output.getParentFile() != null) {
            output.getParentFile().mkdirs();
        }
        PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(output),
                StandardCharsets.UTF_8));
        try {
            IvySettings settings = IvyContext.getContext().getSettings();
            IvyVariableContainer variables = new IvyVariableContainerWrapper(
                    settings.getVariableContainer());

            variables.setVariable("ivy.pom.license", SKIP_LINE, true);
            variables.setVariable("ivy.pom.header", SKIP_LINE, true);
            variables.setVariable("ivy.pom.groupId", SKIP_LINE, true);
            variables.setVariable("ivy.pom.artifactId", SKIP_LINE, true);
            variables.setVariable("ivy.pom.version", SKIP_LINE, true);
            variables.setVariable("ivy.pom.packaging", SKIP_LINE, true);
            variables.setVariable("ivy.pom.name", SKIP_LINE, true);
            variables.setVariable("ivy.pom.description", SKIP_LINE, true);
            variables.setVariable("ivy.pom.url", SKIP_LINE, true);

            if (options.getLicenseHeader() != null) {
                variables.setVariable("ivy.pom.license", options.getLicenseHeader(), true);
            }
            if (options.isPrintIvyInfo()) {
                String header = "<!--\n" + "   Apache Maven 2 POM generated by Apache Ivy\n"
                        + "   " + Ivy.getIvyHomeURL() + "\n" + "   Apache Ivy version: "
                        + Ivy.getIvyVersion() + " " + Ivy.getIvyDate() + "\n" + "-->";
                variables.setVariable("ivy.pom.header", header, true);
            }

            setModuleVariables(md, variables, options);

            boolean dependenciesPrinted = false;

            int lastIndent = 0;
            int indent = 0;
            String line = in.readLine();
            while (line != null) {
                line = IvyPatternHelper.substituteVariables(line, variables);
                if (line.contains(SKIP_LINE)) {
                    // skip this line
                    line = in.readLine();
                    continue;
                }

                if (line.trim().isEmpty()) {
                    // empty line
                    out.println(line);
                    line = in.readLine();
                    continue;
                }

                lastIndent = indent;
                indent = line.indexOf('<');

                if (!dependenciesPrinted && line.contains("</dependencies>")) {
                    printDependencies(md, out, options, indent, false);
                    dependenciesPrinted = true;
                }

                if (!dependenciesPrinted && line.contains("</project>")) {
                    printDependencies(md, out, options, lastIndent, true);
                    dependenciesPrinted = true;
                }

                out.println(line);
                line = in.readLine();
            }
        } finally {
            in.close();
            out.close();
        }
    }