Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-6801

MavenXpp3Writer doesn't retain structure

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Plugins and Lifecycle
    • Labels:
      None

      Description

      Context:
      We are using pipeline-utility-steps-plugin which is a jenkins plugin which uses the following classes:
      https://github.com/jenkinsci/pipeline-utility-steps-plugin/blob/master/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/maven/ReadMavenPomStep.java.
      https://github.com/jenkinsci/pipeline-utility-steps-plugin/blob/master/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/maven/WriteMavenPomStep.java#L32
      In our Jenkins file we have a stage that overwrites the version in the pom with the computed version and for this we need pipeline-utility-steps-plugin.

      The problem is that the tags in the pom.xml are never retained in the same order. The elements in the pom file are completelly rearranged.
      For consistency reasons and idempotency we need to retain the structure and simply update one line.

      Status:
      After evaluating the plugin code we noticed that it uses:
      https://github.com/jenkinsci/pipeline-utility-steps-plugin/blob/master/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/maven/WriteMavenPomStep.java#L32
      and imports:
      import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
      with https://maven.apache.org/ref/3.3.9/maven-model/apidocs/src-html/org/apache/maven/model/io/xpp3/MavenXpp3Writer.html
      which uses
      XmlSerializer serializer = new MXSerializer();
      https://github.com/sonatype/plexus-utils/blob/master/src/main/java/org/codehaus/plexus/util/xml/pull/MXSerializer.java
      We think that maven XmlSerializer causes this problem.

      Example of the pom.xml changes:

      first build trigger:

      run 1:
      <properties>
      <javax.version>3.1.0</javax.version>
      <mockito.version>1.10.19</mockito.version>
      <hamcrest.version>2.1</hamcrest.version>
      <openam.version>6.5.1</openam.version>
      <lombok.version>1.18.6</lombok.version>
      <junit.version>4.12</junit.version>
      </properties>

      run 2:
      <properties>
      <mockito.version>1.10.19</mockito.version>
      <javax.version>3.1.0</javax.version>
      <hamcrest.version>2.1</hamcrest.version>
      <openam.version>6.5.1</openam.version>
      <lombok.version>1.18.6</lombok.version>
      <junit.version>4.12</junit.version>
      </properties>
      ‚Äčand run 3:
      <properties>
      <javax.version>3.1.0</javax.version>
      <mockito.version>1.10.19</mockito.version>
      <hamcrest.version>2.1</hamcrest.version>
      <openam.version>6.5.1</openam.version>
      <lombok.version>1.18.6</lombok.version>
      <junit.version>4.12</junit.version>
      </properties>

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              liana.lupsa1 Liana Lupsa
            • Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated: