Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: maven-archiver-2.4
-
Fix Version/s: None
-
Component/s: maven-archiver
-
Labels:None
-
Environment:HideRHEL 5.4
Apache Maven 2.2.1 (r801777; 2009-08-06 13:16:01-0600)
Java version: 1.6.0_19
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux" version: "2.6.18-164.2.1.el5pae" arch: "i386" Family: "unix"ShowRHEL 5.4 Apache Maven 2.2.1 (r801777; 2009-08-06 13:16:01-0600) Java version: 1.6.0_19 Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux" version: "2.6.18-164.2.1.el5pae" arch: "i386" Family: "unix"
-
Number of attachments :
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:
<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:
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:
... [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:
- get the pomPropertiesFile configuration property.
- if the property is not null and the property maps to an existing file
- archiver.addFile( pomPropertiesFile, "META-INF/maven/" + groupId + "/" + artifactId + "/pom.properties" );
- else the file property was null
- Create the temporary maven-archiver folder
- Create a ref to the maven-archiver/pom.properties file
- Call PomPropertiesUtil#createPomProperties
- if the property is not null and the property maps to an existing file
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.