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