Author: olamy
Date: Mon Nov 4 05:04:31 2013
New Revision: 1538504
URL: http://svn.apache.org/r1538504
Log:
[MTOMCAT-159] WAR dependencies extracted every run
Submitted by Robert Hollencamp
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=1538504&r1=1538503&r2=1538504&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 4 05:04:31 2013
@@ -88,15 +88,9 @@ public class DefaultClassLoaderEntriesCa
throw new TomcatRunException( e.getMessage(), e );
}
- // TODO find a solution to use a timestamp marker to not
delete/extract all the time
-
File tmpExtractDatas =
new File( request.getMavenProject().getBuild().getDirectory(),
"apache-tomcat-maven-plugin" );
- if ( tmpExtractDatas.exists() )
- {
- deleteDirectory( tmpExtractDatas, request.getLog() );
- }
tmpExtractDatas.mkdirs();
// add artifacts to loader
@@ -138,18 +132,44 @@ public class DefaultClassLoaderEntriesCa
File tmpDir = new File( tmpExtractDatas,
artifact.getArtifactId() );
- tmpDir.mkdirs();
+ boolean existed = !tmpDir.mkdirs();
+ // does a directory for this artifact already exist?
+ if (existed)
+ {
+ // check timestamp to see if artifact is newer than
extracted directory
+ long dirLastMod = tmpDir.lastModified();
+ long warLastMod = artifact.getFile().lastModified();
+
+ if (warLastMod == 0L || warLastMod > dirLastMod)
+ {
+ request.getLog().debug(
+ "re-exploding artifact " +
artifact.getArtifactId() + " due to newer WAR");
+
+ deleteDirectory( tmpDir, request.getLog() );
+ tmpDir = new File( tmpExtractDatas,
artifact.getArtifactId() );
+ tmpDir.mkdirs();
+ existed = false;
+ }
+ else
+ {
+ request.getLog().debug(
+ "using existing exploded war for artifact " +
artifact.getArtifactId());
+ }
+ }
tmpDirectories.add( tmpDir );
try
{
- tmpDir.deleteOnExit();
- File warFile = artifact.getFile();
- UnArchiver unArchiver = archiverManager.getUnArchiver(
"jar" );
- unArchiver.setSourceFile( warFile );
- unArchiver.setDestDirectory( tmpDir );
- unArchiver.extract();
+ // explode the archive if it is not already exploded
+ if (!existed)
+ {
+ File warFile = artifact.getFile();
+ UnArchiver unArchiver =
archiverManager.getUnArchiver( "jar" );
+ unArchiver.setSourceFile( warFile );
+ unArchiver.setDestDirectory( tmpDir );
+ unArchiver.extract();
+ }
File libsDirectory = new File( tmpDir, "WEB-INF/lib" );
if ( libsDirectory.exists() )
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]