Maven Shared Components
  1. Maven Shared Components
  2. MSHARED-154

pomPropertiesFile does not actually permit override

    Details

    • Type: Bug Bug
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: maven-archiver-2.4
    • Fix Version/s: None
    • Component/s: maven-archiver
    • Labels:
      None
    • Environment:
    • Number of attachments :
      1

      Description

      The What

      My understanding is that the pomPropertiesFile configuration element will allow you to override the default pom.properties file that is created by the maven-archiver when addMavenDescriptor is true. I wanted to use this feature to include some Hudson build data into the pom.properties file. We already have utility classes that read version information from this file, so it wasn't a leap to add some build-server information to this same file.

      From the Maven Archiver Reference page:

      pomPropertiesFile Use this to override the auto generated pom.properties file (only if addMavenDescriptor is set to true) File 2.3

      My Expectations

      So my assumption is that I can provide a customized pom.properties file that will be written/copied to the {{META-INF/maven/" + $

      {pom.groupId}

      + "/" + $

      {pom.artifactId}

      + "/pom.properties}} file.

      The Actual Result

      The File I pass to the pomPropertiesFile element is actually overwritten with the default pom.properties file format. One could say it is overriding my override. Maybe I am misunderstanding this configuration element altogether, I can't see how it can possibly be helpful the way that it is behaving right now...

      Background Information

      I am witnessing this behaviour with the apache war plugin:

      Snippet of my pom.xml
      <plugin>
      	<groupId>org.apache.maven.plugins</groupId>
      	<artifactId>maven-war-plugin</artifactId>
      	<version>2.1-beta-1</version>
      	<configuration>
      	<archive>
      		<addMavenDescriptor>true</addMavenDescriptor>
      		<pomPropertiesFile>configurations/custom-pom.properties</pomPropertiesFile>
      	</archive>
      	</configuration>
      </plugin>
      

      And here is my customized properties file that I want used to replace the default pom.properties content:

      Snippet of my custom-pom.properties override file
      version=$\{pom.version\}
      groupId=$\{pom.groupId\}
      artifactId=$\{pom.artifactId\}
      buildTag=${BUILD_TAG}
      buildNumber=${BUILD_NUMBER}
      buildId=${BUILD_ID}
      

      I see from my Maven output that maven-war-plugin-2.1-beta-1 uses maven-archiver-2.4:

      Maven output
      ...
      [DEBUG] Plugin dependencies for:
      
      org.apache.maven.plugins:maven-war-plugin:2.1-beta-1
      
      are:
      
      org.apache.maven:maven-plugin-api:jar:2.0.6:runtime
      org.apache.maven:maven-artifact:jar:2.0.6:runtime
      org.apache.maven:maven-archiver:jar:2.4:runtime
      org.codehaus.plexus:plexus-archiver:jar:1.0-alpha-9:runtime
      org.codehaus.plexus:plexus-io:jar:1.0-alpha-1:runtime
      com.thoughtworks.xstream:xstream:jar:1.3.1:runtime
      org.codehaus.plexus:plexus-utils:jar:1.5.5:runtime
      org.apache.maven.shared:maven-filtering:jar:1.0-beta-2:runtime
      ...
      [DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-war-plugin:2.1-beta-1:war' -->
      [DEBUG]   (s) addMavenDescriptor = false
      [DEBUG]   (s) pomPropertiesFile = /SOME_PATH/configurations/custom-pom.properties
      ...
      

      MavenArchiver#createArchive(...)

      I notice that the createArchive(...) method ALWAYS writes the standard/default pom.properties contents to the supplied file. That provides no benefit.

      If I can offer a suggestion:

      1. get the pomPropertiesFile configuration property.
        • if the property is not null and the property maps to an existing file
          1. archiver.addFile( pomPropertiesFile, "META-INF/maven/" + groupId + "/" + artifactId + "/pom.properties" );
        • else the file property was null
          1. Create the temporary maven-archiver folder
          2. Create a ref to the maven-archiver/pom.properties file
          3. Call PomPropertiesUtil#createPomProperties
      1. path.diff
        14 kB
        Saponenko Denis

        Activity

        Hide
        Sergei Ivanov added a comment -

        I have just run into the very same problem. I was under assumption that I could override the default pom.properties in maven-jar-plugin execution and augment it with additional build information. It appears it's not possible now.

        Show
        Sergei Ivanov added a comment - I have just run into the very same problem. I was under assumption that I could override the default pom.properties in maven-jar-plugin execution and augment it with additional build information. It appears it's not possible now.
        Hide
        Sergei Ivanov added a comment -

        What I have also found is that the plugin does actually overwrite my custom properties file with the default content!

        Show
        Sergei Ivanov added a comment - What I have also found is that the plugin does actually overwrite my custom properties file with the default content!
        Hide
        Michal Letynski added a comment -

        I also have same problem. Any fix date or workaround for this issue ?

        Show
        Michal Letynski added a comment - I also have same problem. Any fix date or workaround for this issue ?
        Hide
        Daniel Galán y Martins added a comment -

        Same for me, bug is quite old.

        Show
        Daniel Galán y Martins added a comment - Same for me, bug is quite old.
        Hide
        Nathan Green added a comment -

        I created a patch using github, viewable here.

        Show
        Nathan Green added a comment - I created a patch using github, viewable here .
        Hide
        Saponenko Denis added a comment -

        This is function very importantly for me. I use pathed plugin in my projects and add my path to attachment. May upload change classes to public repository (github)?

        Show
        Saponenko Denis added a comment - This is function very importantly for me. I use pathed plugin in my projects and add my path to attachment. May upload change classes to public repository (github)?

          People

          • Assignee:
            Unassigned
            Reporter:
            Dan Nelson
          • Votes:
            10 Vote for this issue
            Watchers:
            11 Start watching this issue

            Dates

            • Created:
              Updated: