Java 修改pom文件后保留注释

Java 修改pom文件后保留注释,java,maven,xml-parsing,pom.xml,Java,Maven,Xml Parsing,Pom.xml,我试图使用ApacheMaven模型()修改pom文件,但无法保留注释 我尝试了xmlstarlet cmd工具,该工具可以保留注释,但对我来说速度很慢,因为我有100个pom文件要修改 这是我正在试验的pom文件示例 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XML

我试图使用ApacheMaven模型()修改pom文件,但无法保留注释

我尝试了xmlstarlet cmd工具,该工具可以保留注释,但对我来说速度很慢,因为我有100个pom文件要修改

这是我正在试验的pom文件示例

<?xml version="1.0" encoding="UTF-8"?>
<project
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>test-java-dependencies</artifactId>
  <version>1.2.2</version>
  <packaging>pom</packaging>

  <properties>

        <!--################################################-->
        <!-- Define and set:                                -->
        <!--  * general project settings                    -->
        <!--  * plugin versions and settings                -->
        <!--  * dependency versions and settings            -->
        <!--################################################-->

    <version.jackson>2.9.9</version.jackson>
  </properties>
  <dependencyManagement>
    <dependencies>
      <!-- Jackson all related libraries imported -->
      <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>${version.jackson}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

我不仅仅是在设置一个版本,而且还有一些修改


ApacheMaven模型支持保留注释吗?我搜索了一段时间,但无法确认。Java中有任何库可以做到这一点吗?

即使我也面临同样的问题。没有找到任何解决方案yetI最终使用了jdom2,它保留了注释和输入文件的格式。即使我也面临同样的问题。没有找到任何解决方案yetI最终使用了jdom2,它保留了注释和输入文件的格式。
    File pomFile = new File(".....\\pom.xml");
    Model model = getMavenModel(pomFile);
    model.setVersion("1.2.3")

    File pomFileNew = new File("...\\pom-new.xml");
    writeMavenModel(model, pomFile1);

  static Model getMavenModel(File file) {
    MavenXpp3Reader reader = new MavenXpp3Reader();
    reader.setAddDefaultEntities(true);
    try {
      return reader.read(new FileReader(file));
    } catch (IOException | XmlPullParserException e) {
      e.printStackTrace();
    }
    return null;
  }

  static void writeMavenModel(Model model, File file) {
    MavenXpp3Writer writer = new MavenXpp3Writer();
    try (FileWriter w = new FileWriter(file)) {
      writer.write(w, model);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }