Uploaded image for project: 'Maven Shared Components'
  1. Maven Shared Components
  2. MSHARED-154

pomPropertiesFile does not actually permit override

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: maven-archiver-2.4
    • Fix Version/s: maven-archiver-3.0.1
    • Component/s: maven-archiver
    • Labels:
      None
    • Environment:

      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

        Attachments

        1. 2.7-SNAPSHOT_path
          10 kB
          Saponenko Denis
        2. 2.7-SNAPSHOT_path
          10 kB
          Saponenko Denis
        3. 2.7-SNAPSHOT_path
          12 kB
          Saponenko Denis
        4. path.diff
          14 kB

          Activity

            People

            • Assignee:
              michael-o Michael Osipov
              Reporter:
              nad.noslen Dan Nelson
            • Votes:
              8 Vote for this issue
              Watchers:
              13 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: