From 2ee4244cb03f9ad716eca20986a05e9780248eba Mon Sep 17 00:00:00 2001 From: pmonks Date: Wed, 31 Aug 2011 18:34:04 +0000 Subject: [PATCH] Fixed issue #5 - added a hardcoded file-mappings.properties that allows overriding resources in /WEB-INF/ (which is not recommended, but may be necessary in some cases). git-svn-id: http://maven-alfresco-archetypes.googlecode.com/svn/trunk@338 04253f4f-3451-0410-a141-5562f1e59037 --- .../packaging/AmpProjectPackagingTask.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/plugins/maven-amp-plugin/src/main/java/org/alfresco/maven/plugin/amp/packaging/AmpProjectPackagingTask.java b/plugins/maven-amp-plugin/src/main/java/org/alfresco/maven/plugin/amp/packaging/AmpProjectPackagingTask.java index 377a9f32..dd28df36 100644 --- a/plugins/maven-amp-plugin/src/main/java/org/alfresco/maven/plugin/amp/packaging/AmpProjectPackagingTask.java +++ b/plugins/maven-amp-plugin/src/main/java/org/alfresco/maven/plugin/amp/packaging/AmpProjectPackagingTask.java @@ -11,7 +11,9 @@ import org.codehaus.plexus.util.DirectoryScanner; import org.codehaus.plexus.util.StringUtils; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; /** * Handles the project own resources, that is: @@ -29,10 +31,15 @@ public class AmpProjectPackagingTask extends AbstractAmpPackagingTask { private static final String MODULE_PROPERTIES = "module.properties"; + private static final String FILE_MAPPINGS = "file-mappings.properties"; private static final String WEB_PATH = "web/"; private static final String CONFIG_PATH = "config/"; + + private static final String FILE_MAPPINGS_CONTENT = "# Add mapping for /WEB-INF/, since MMT doesn't support it by default\n" + + "/web/WEB-INF=/WEB-INF\n"; + private Resource[] webResources = new Resource[0]; @@ -71,6 +78,8 @@ public class AmpProjectPackagingTask handeWebAppSourceDirectory( context ); + synthesiseFileMappings(context); + // Notice: this will work only in case we are copying only this AMP or this AMP is // set as last overlay of the maven-amp-plugin @@ -144,6 +153,46 @@ public class AmpProjectPackagingTask } } } + + + /** + * Synthesizes (creates) a standard file-mappings.properties file so that resources in webapp/WEB-INF + * get written to the correct location by the MMT. + * + * @param context The packaging context + * @throws MojoExecutionException if the file could not be created + */ + protected void synthesiseFileMappings(final AmpPackagingContext context) + throws MojoExecutionException + { + try + { + File fileMappings = new File(context.getAmpDirectory(), FILE_MAPPINGS); + OutputStream out = null; + + fileMappings.createNewFile(); // Note: ignore if the file already exists - we simply overwrite its existing contents + + try + { + out = new FileOutputStream(fileMappings, false); + + out.write(FILE_MAPPINGS_CONTENT.getBytes()); + } + finally + { + if (out != null) + { + out.flush(); + out.close(); + } + } + } + catch (final IOException ioe) + { + throw new MojoExecutionException("Could not create file-mappings.properties in [" + context.getAmpDirectory().getAbsolutePath() + "]", ioe); + } + } + /** * Handles the webapp sources.