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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org