I have a Maven web application with text files in
src/main/webapp/textfilesdir
As I understand it, during the package phase this textfilesdir directory will be copied into the
target/project-1.0-SNAPSHOT
directory, which is then zipped up into a
target/project-1.0-SNAPSHOT.war
Problem
Now, I need to do a string replacement on the contents of the text files in target/project-1.0-SNAPSHOT/textfilesdir. This must then be done after the textfilesdir is copied into target/project-1.0-SNAPSHOT, but prior to the target/project-1.0-SNAPSHOT.war file being created. I believe this is all done during the package phase.
How can a plugin (potentially maven-antrun-plugin), plug into the package phase to do this.
The text files don’t contain properties, like ${property-name} to filter on. String replacement is likely the only option.
Options
-
Modify the text files after the copy into target/project-1.0-SNAPSHOT directory, yet prior to the WAR creation.
-
After packaging, extract the text files from WAR, modify them, and add them back into the WAR.
I’m thinking there is another option here I’m missing. Thoughts anyone?
Option 1 is not doable,
prepare-packageis too early,packageis too late so I don’t see where you could plug any custom work. Option 2 is doable but a painful IMO. So here are some more propositions (all based on AntRun and the ReplaceRegExp and/or Replace tasks).Solution 1:
prepare-packageand configure it to process the files and put the processed files in some directory undertarget(e.g.target/textfilesdir).target/textfilesdiras awebResource. Refer to Adding and Filtering External Web Resources for the details.Solution 2:
prepare-packageand configure it to process the text files fromsrc/main/webapp/textfilesdirand put the processed files in thetarget/project-1.0-SNAPSHOT.I think I’d go for the second solution.