PomUtil { public static final void writePOM(Document document, MavenProject project) { File pom = project.getFile(); Preconditions.checkArgument(pom != null && pom.exists() && pom.isFile(), "The passed project does not contain a valid POM file reference."); try { writePOM(document, new FileOutputStream(pom), true); } catch (Throwable t) { throw new RuntimeException("Could not serialize the project object model of the following module: " + ProjectToString.INSTANCE.apply(project), t); } } private  PomUtil(); static final Optional<Document> parsePOM(MavenProject project); static final Optional<Document> parsePOM(File pomFile); static final Document parsePOM(InputStream in); static final void writePOM(Document document, MavenProject project); static final void writePOM(Document document, OutputStream out, boolean closeOut); static void setProjectVersion(Model model, Document document, String newVersion); static void setParentVersion(Model model, Document document, String newParentVersion); static void setDependencyVersion(Dependency dependency, Document document, String dependenciesPath,
      String newVersion); static Node getOrCreateBuildNode(Document document, boolean createOnDemand); static Node getOrCreatePluginsNode(Document document, boolean createOnDemand); static Node getPlugin(Document document, String groupId, String artifactId); static Node createPlugin(Document document, String groupId, String artifactId, String version); static Node createPluginExecution(Node plugin, String id, Optional<String> phase, String... goals); static Node getOrCreateScmNode(Document document, boolean createOnDemand); static void setNodeTextContent(Node parentNode, String nodeName, String content, boolean createOnDemand); static void deleteNode(Node parentNode, String nodeName); static boolean hasChildNode(Node parentNode, String nodeName); static Optional<String> getChildNodeTextContent(Node parentNode, String nodeName); static final String ARTIFACT_TYPE_JAR; static final String ARTIFACT_TYPE_POM; static final String VERSION_QUALIFIER_SNAPSHOT; static final String VERSION_LATEST; static final String NODE_NAME_ARTIFACT_ID; static final String NODE_NAME_BUILD; static final String NODE_NAME_EXECUTION; static final String NODE_NAME_EXECUTIONS; static final String NODE_NAME_GOAL; static final String NODE_NAME_GOALS; static final String NODE_NAME_GROUP_ID; static final String NODE_NAME_ID; static final String NODE_NAME_PARENT; static final String NODE_NAME_PHASE; static final String NODE_NAME_PLUGIN; static final String NODE_NAME_PLUGINS; static final String NODE_NAME_PROJECT; static final String NODE_NAME_SCM; static final String NODE_NAME_SCM_CONNECTION; static final String NODE_NAME_SCM_DEV_CONNECTION; static final String NODE_NAME_SCM_TAG; static final String NODE_NAME_SCM_URL; static final String NODE_NAME_VERSION; static final String NODE_NAME_DEPENDENCY; static final String NODE_NAME_DEPENDENCIES; static final String NODE_NAME_DEPENDENCY_MANAGEMENT; }
@Test public void testWritePOM_Project() throws Exception { URL url = getClass().getResource(getClass().getSimpleName() + "/pom1.xml"); File source; try { source = new File(url.toURI()); } catch (URISyntaxException e) { source = new File(url.getPath()); } DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = builder.parse(source); File f = this.TemporaryFolder.newFile(); MavenProject project = new MavenProject(); project.setFile(f); PomUtil.writePOM(document, project); Document parsedDocument = builder.parse(f); Assert.assertNotNull(parsedDocument); Element root = parsedDocument.getDocumentElement(); Assert.assertEquals("project", root.getTagName()); Node gid = getNode(root, PomUtil.NODE_NAME_GROUP_ID); Assert.assertNotNull(gid); Assert.assertEquals("com.itemis.maven.plugins", gid.getTextContent()); Node aid = getNode(root, PomUtil.NODE_NAME_ARTIFACT_ID); Assert.assertNotNull(aid); Assert.assertEquals("test-project-1", aid.getTextContent()); Assert.assertEquals("1", parsedDocument.getElementsByTagName(PomUtil.NODE_NAME_VERSION).item(0).getTextContent()); }
@Test public void testWritePOM_Stream() throws Exception { URL url = getClass().getResource(getClass().getSimpleName() + "/pom1.xml"); File source; try { source = new File(url.toURI()); } catch (URISyntaxException e) { source = new File(url.getPath()); } DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = builder.parse(source); File f = this.TemporaryFolder.newFile(); FileOutputStream fos = null; try { fos = new FileOutputStream(f); PomUtil.writePOM(document, fos, true); try { fos.write(1); Assert.fail("Write method did not close the output stream although it had been requested."); } catch (Exception e) { } } finally { Closeables.close(fos, true); } Document parsedDocument = builder.parse(f); Assert.assertNotNull(parsedDocument); Element root = parsedDocument.getDocumentElement(); Assert.assertEquals("project", root.getTagName()); Node gid = getNode(root, PomUtil.NODE_NAME_GROUP_ID); Assert.assertNotNull(gid); Assert.assertEquals("com.itemis.maven.plugins", gid.getTextContent()); Node aid = getNode(root, PomUtil.NODE_NAME_ARTIFACT_ID); Assert.assertNotNull(aid); Assert.assertEquals("test-project-1", aid.getTextContent()); Assert.assertEquals("1", parsedDocument.getElementsByTagName(PomUtil.NODE_NAME_VERSION).item(0).getTextContent()); f = this.TemporaryFolder.newFile(); fos = null; try { fos = new FileOutputStream(f); PomUtil.writePOM(document, fos, false); try { fos.write(1); } catch (Exception e) { Assert.fail("Write method did not close the output stream although it had been requested."); } } finally { Closeables.close(fos, true); } }