Folks,

Environment: Maven 3.1.1, JDK 1.7.0_45

I'm having some challenges with the Maven WAR plugin (2.4), archiveClasses, and finalName. In addition, I am using the Freemarker preprocessor plugin (FMPP plugin) to generate some output.

Here's what I've tried (without the FMPP plugin).

1. Default name (artifactId-version.extension)

All resources and classes get placed into artifactId-version.JAR as expected. The WAR file is also named artifactId-version.WAR.

2. finalName as ${project.artifactId}

No classes get placed into artifactId-version.JAR. Resources are added into artifactId-version.JAR. The WAR file is named artifactId.war

3. finalName as ${project.artifactId} with explicit outputFileMapping

<outputFileNameMapping>
  @{artifactId}@-@{version}@.@{extension}@
</outputFileNameMapping>

No classes get placed into artifactId-version.JAR. Resources are added into artifactId-version.JAR. The WAR file is named artifactId.war

4. finalName as ${project.artifactId} with explicit outputFileMapping

<outputFileNameMapping>
  @{artifactId}@.@{version}@.@{extension}@
</outputFileNameMapping>

Note the '.' instead of the dash between artifactId and version.

All resources and classes are placed into artifactId.version.JAR. All other dependent JARs are also renamed. The WAR file is named artifactId.war

To add confusion to the mix, I'm using the FMPP plugin. I've bound this to the compile phase (rather than the default generate-sources phase), and placed the output in target/classes. I'm doing this since I am preprocessing some files that should get included into the JAR.

Now, if I rerun the above four scenarios, I get the following results.

1. The preprocessed file is not placed in the JAR file, even though it's in target/classes in the proper place.

2. Only the resources get placed into the JAR file (as before).

3. Only the resources get placed into the JAR file (as before).

4. All resources, preprocessed files, and classes get placed into the JAR file.

In short, scenario 4 works with the downside that it renames all other dependent JARs to fit the outputFileNameMapping designation.

I don't understand why 3 doesn't work.

The desired end result is to have a version-less WAR file, and all of the project resources bundled up into the standard artifactId-version.extension naming format.

The only way I've found to accomplish this is to make a module with the resources / source code and have the parent depend on this module. That certainly feels like a hack to get around a packaging problem.

What is my vision problem (other than my requirements, which are sadly not subject to change at the moment)?

Thanks,
Mark
/mde/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to