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/11/07 15:06:26 UTC

svn commit: r1198740 - /tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/DefaultClassLoaderEntriesCalculator.java

Author: olamy
Date: Mon Nov  7 14:06:26 2011
New Revision: 1198740

URL: http://svn.apache.org/viewvc?rev=1198740&view=rev
Log:
[MTOMCAT-100] support war overlay to add war external dependencies in tomcat run
avoid duplicate jars in the webappclassloader: can cause issues with struts2

Modified:
    tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/DefaultClassLoaderEntriesCalculator.java

Modified: tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/DefaultClassLoaderEntriesCalculator.java
URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/DefaultClassLoaderEntriesCalculator.java?rev=1198740&r1=1198739&r2=1198740&view=diff
==============================================================================
--- tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/DefaultClassLoaderEntriesCalculator.java (original)
+++ tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/DefaultClassLoaderEntriesCalculator.java Mon Nov  7 14:06:26 2011
@@ -59,6 +59,8 @@ public class DefaultClassLoaderEntriesCa
     {
         Set<String> classLoaderEntries = new LinkedHashSet<String>();
 
+        List<String> fileInClassLoaderEntries = new ArrayList<String>();
+
         List<File> tmpDirectories = new ArrayList<File>();
 
         // add classes directories to loader
@@ -113,7 +115,12 @@ public class DefaultClassLoaderEntriesCa
                             + artifact.getVersion() + ":" + artifact.getScope() );
                     if ( !isInProjectReferences( artifact, request.getMavenProject() ) )
                     {
-                        classLoaderEntries.add( artifact.getFile().toURI().toString() );
+                        String fileName = artifact.getFile().getName();
+                        if ( !fileInClassLoaderEntries.contains( fileName ) )
+                        {
+                            classLoaderEntries.add( artifact.getFile().toURI().toString() );
+                            fileInClassLoaderEntries.add( fileName );
+                        }
                     }
                     else
                     {
@@ -122,8 +129,6 @@ public class DefaultClassLoaderEntriesCa
                     }
                 }
 
-
-
                 // in case of war dependency we must add /WEB-INF/lib/*.jar in entries and WEB-INF/classes
                 if ( "war".equals( artifact.getType() ) && request.isAddWarDependenciesInClassloader() )
                 {
@@ -143,7 +148,6 @@ public class DefaultClassLoaderEntriesCa
                         unArchiver.setDestDirectory( tmpDir );
                         unArchiver.extract();
 
-
                         File libsDirectory = new File( tmpDir, "WEB-INF/lib" );
                         if ( libsDirectory.exists() )
                         {
@@ -156,7 +160,17 @@ public class DefaultClassLoaderEntriesCa
                             } );
                             for ( String jar : jars )
                             {
-                                classLoaderEntries.add( new File( libsDirectory, jar ).toURI().toString() );
+                                File jarFile = new File( libsDirectory, jar );
+                                if ( !fileInClassLoaderEntries.contains( jarFile.getName() ) )
+                                {
+                                    classLoaderEntries.add( jarFile.toURI().toString() );
+                                    fileInClassLoaderEntries.add( jarFile.getName() );
+                                }
+                                else
+                                {
+                                    request.getLog().debug( "skip adding file " + jarFile.getPath()
+                                                                + " as it's already in classloader entries" );
+                                }
                             }
                         }
                         File classesDirectory = new File( tmpDir, "WEB-INF/classes" );



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