You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ol...@apache.org on 2011/10/17 16:03:39 UTC

svn commit: r1185180 - in /tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run: AbstractExecWarMojo.java WarRunDependency.java

Author: olamy
Date: Mon Oct 17 14:03:38 2011
New Revision: 1185180

URL: http://svn.apache.org/viewvc?rev=1185180&view=rev
Log:
[MTOMCAT-102] option to add dynamically a context.xml to a war before packaging it

Modified:
    tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java
    tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/WarRunDependency.java

Modified: tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java
URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java?rev=1185180&r1=1185179&r2=1185180&view=diff
==============================================================================
--- tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java (original)
+++ tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java Mon Oct 17 14:03:38 2011
@@ -45,9 +45,11 @@ import org.codehaus.plexus.archiver.jar.
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.io.PrintWriter;
 import java.util.Enumeration;
 import java.util.List;
@@ -271,12 +273,12 @@ public abstract class AbstractExecWarMoj
             properties.put( Tomcat7Runner.ACCESS_LOG_VALVE_FORMAT_KEY, accessLogValveFormat );
 
             os =
-                new ArchiveStreamFactory().createArchiveOutputStream(ArchiveStreamFactory.JAR, execWarJarOutputStream);
+                new ArchiveStreamFactory().createArchiveOutputStream( ArchiveStreamFactory.JAR, execWarJarOutputStream );
 
             if ( "war".equals( project.getPackaging() ) )
             {
                 os.putArchiveEntry( new JarArchiveEntry( path + ".war" ) );
-                IOUtils.copy( new FileInputStream(projectArtifact.getFile()), os );
+                IOUtils.copy( new FileInputStream( projectArtifact.getFile() ), os );
                 os.closeArchiveEntry();
                 properties.put( Tomcat7Runner.WARS_KEY , path + ".war|" + path );
             }
@@ -295,8 +297,13 @@ public abstract class AbstractExecWarMoj
                             artifactFactory.createArtifact( dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), dependency.getScope(), dependency.getType()  );
                         
                         artifactResolver.resolve( artifact, this.remoteRepos , this.local );
-                        os.putArchiveEntry( new JarArchiveEntry( artifact.getFile().getName() ) );
-                        IOUtils.copy( new FileInputStream(artifact.getFile()), os );
+                        File warFile = artifact.getFile();
+                        if ( warRunDependency.contextXml != null )
+                        {
+                            addContextXmlToWar( warRunDependency.contextXml, warFile );
+                        }
+                        os.putArchiveEntry( new JarArchiveEntry( warFile.getName() ) );
+                        IOUtils.copy( new FileInputStream( warFile ), os );
                         os.closeArchiveEntry();
                         String propertyWarValue = properties.getProperty( Tomcat7Runner.WARS_KEY );
                         // FIXME check contextPath is not empty or at least only / for root app
@@ -424,7 +431,28 @@ public abstract class AbstractExecWarMoj
             IOUtils.closeQuietly( os );
             IOUtils.closeQuietly( tmpManifestWriter );
             IOUtils.closeQuietly( execWarJarOutputStream );
-            IOUtils.closeQuietly(tmpPropertiesFileOutputStream);
+            IOUtils.closeQuietly( tmpPropertiesFileOutputStream );
+        }
+    }
+
+
+    private void addContextXmlToWar(File contextXmlFile, File warFile)
+        throws IOException, ArchiveException
+    {
+        ArchiveOutputStream os = null;
+        OutputStream warOutputStream = null;
+        try
+        {
+            warOutputStream = new FileOutputStream( warFile );
+            os =
+                new ArchiveStreamFactory().createArchiveOutputStream( ArchiveStreamFactory.JAR, warOutputStream );
+            os.putArchiveEntry( new JarArchiveEntry( "META-INF/context.xml" ) );
+            IOUtils.copy( new FileInputStream( contextXmlFile ), os );
+            os.closeArchiveEntry();
+        } finally
+        {
+            IOUtils.closeQuietly( os );
+            IOUtils.closeQuietly( warOutputStream );
         }
     }
 }

Modified: tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/WarRunDependency.java
URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/WarRunDependency.java?rev=1185180&r1=1185179&r2=1185180&view=diff
==============================================================================
--- tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/WarRunDependency.java (original)
+++ tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/WarRunDependency.java Mon Oct 17 14:03:38 2011
@@ -20,6 +20,8 @@ package org.apache.tomcat.maven.plugin.t
 
 import org.apache.maven.model.Dependency;
 
+import java.io.File;
+
 /**
  * @author Olivier Lamy
  * @since 2.0
@@ -31,6 +33,8 @@ public class WarRunDependency
     
     public String contextPath;
 
+    public File contextXml;
+
     public WarRunDependency()
     {
         // no op



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org