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/05 23:49:59 UTC
svn commit: r1198103 - in /tomcat/maven-plugin/trunk:
common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/
tomcat6-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat6/
tomcat7-maven-plugin/src/main/java/org/apache/...
Author: olamy
Date: Sat Nov 5 22:49:59 2011
New Revision: 1198103
URL: http://svn.apache.org/viewvc?rev=1198103&view=rev
Log:
[MTOMCAT-100] support war overlay to add war external dependencies in tomcat run
delete temporary directories used for extract after plugin shutdown.
Added:
tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorResult.java
- copied, changed from r1196544, tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculator.java
Modified:
tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculator.java
tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorRequest.java
tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/DefaultClassLoaderEntriesCalculator.java
tomcat/maven-plugin/trunk/tomcat6-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat6/RunMojo.java
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/RunMojo.java
Modified: tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculator.java
URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculator.java?rev=1198103&r1=1198102&r2=1198103&view=diff
==============================================================================
--- tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculator.java (original)
+++ tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculator.java Sat Nov 5 22:49:59 2011
@@ -27,6 +27,6 @@ import java.util.List;
*/
public interface ClassLoaderEntriesCalculator
{
- List<String> calculateClassPathEntries( ClassLoaderEntriesCalculatorRequest classLoaderEntriesCalculatorRequest )
+ ClassLoaderEntriesCalculatorResult calculateClassPathEntries( ClassLoaderEntriesCalculatorRequest classLoaderEntriesCalculatorRequest )
throws TomcatRunException;
}
Modified: tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorRequest.java
URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorRequest.java?rev=1198103&r1=1198102&r2=1198103&view=diff
==============================================================================
--- tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorRequest.java (original)
+++ tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorRequest.java Sat Nov 5 22:49:59 2011
@@ -22,6 +22,7 @@ import org.apache.maven.artifact.Artifac
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
+import java.io.File;
import java.util.Set;
/**
@@ -95,4 +96,5 @@ public class ClassLoaderEntriesCalculato
this.useTestClassPath = useTestClassPath;
return this;
}
+
}
Copied: tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorResult.java (from r1196544, tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculator.java)
URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorResult.java?p2=tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorResult.java&p1=tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculator.java&r1=1196544&r2=1198103&rev=1198103&view=diff
==============================================================================
--- tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculator.java (original)
+++ tomcat/maven-plugin/trunk/common-tomcat-maven-plugin/src/main/java/org/apache/tomcat/maven/common/run/ClassLoaderEntriesCalculatorResult.java Sat Nov 5 22:49:59 2011
@@ -1,5 +1,4 @@
package org.apache.tomcat.maven.common.run;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -19,14 +18,48 @@ package org.apache.tomcat.maven.common.r
* under the License.
*/
+import java.io.File;
import java.util.List;
/**
* @author Olivier Lamy
* @since 2.0
*/
-public interface ClassLoaderEntriesCalculator
+public class ClassLoaderEntriesCalculatorResult
{
- List<String> calculateClassPathEntries( ClassLoaderEntriesCalculatorRequest classLoaderEntriesCalculatorRequest )
- throws TomcatRunException;
+ /**
+ * classpath entries File .toURI().toString()
+ */
+ private List<String> classPathEntries;
+
+ /**
+ * List of files to cleanup after execution
+ */
+ private List<File> tmpDirectories;
+
+ public ClassLoaderEntriesCalculatorResult( List<String> classPathEntries, List<File> tmpDirectories )
+ {
+ this.classPathEntries = classPathEntries;
+ this.tmpDirectories = tmpDirectories;
+ }
+
+ public List<String> getClassPathEntries()
+ {
+ return classPathEntries;
+ }
+
+ public void setClassPathEntries( List<String> classPathEntries )
+ {
+ this.classPathEntries = classPathEntries;
+ }
+
+ public List<File> getTmpDirectories()
+ {
+ return tmpDirectories;
+ }
+
+ public void setTmpDirectories( List<File> tmpDirectories )
+ {
+ this.tmpDirectories = tmpDirectories;
+ }
}
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=1198103&r1=1198102&r2=1198103&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 Sat Nov 5 22:49:59 2011
@@ -19,7 +19,6 @@ package org.apache.tomcat.maven.common.r
* under the License.
*/
-import com.google.common.io.Files;
import org.apache.commons.io.FileUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
@@ -55,11 +54,13 @@ public class DefaultClassLoaderEntriesCa
private ArchiverManager archiverManager;
- public List<String> calculateClassPathEntries( ClassLoaderEntriesCalculatorRequest request )
+ public ClassLoaderEntriesCalculatorResult calculateClassPathEntries( ClassLoaderEntriesCalculatorRequest request )
throws TomcatRunException
{
Set<String> classLoaderEntries = new LinkedHashSet<String>();
+ List<File> tmpDirectories = new ArrayList<File>();
+
// add classes directories to loader
try
{
@@ -85,6 +86,17 @@ 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
if ( request.getDependencies() != null )
{
@@ -109,13 +121,19 @@ public class DefaultClassLoaderEntriesCa
"skip adding artifact " + artifact.getArtifactId() + " as it's in reactors" );
}
}
+
+
+
// 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() )
{
- File tmpDir = null;
+
+ File tmpDir = new File( tmpExtractDatas, artifact.getArtifactId() );
+
+ tmpDirectories.add( tmpDir );
+
try
{
- tmpDir = Files.createTempDir();
tmpDir.deleteOnExit();
File warFile = artifact.getFile();
UnArchiver unArchiver = archiverManager.getUnArchiver( "jar" );
@@ -153,14 +171,12 @@ public class DefaultClassLoaderEntriesCa
"fail to extract war file " + artifact.getFile() + ", reason:" + e.getMessage(), e );
throw new TomcatRunException( e.getMessage(), e );
}
- finally
- {
- deleteDirectory( tmpDir, request.getLog() );
- }
}
}
}
- return new ArrayList<String>( classLoaderEntries );
+
+ return new ClassLoaderEntriesCalculatorResult( new ArrayList<String>( classLoaderEntries ), tmpDirectories );
+
}
private void deleteDirectory( File directory, Log log )
Modified: tomcat/maven-plugin/trunk/tomcat6-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat6/RunMojo.java
URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat6-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat6/RunMojo.java?rev=1198103&r1=1198102&r2=1198103&view=diff
==============================================================================
--- tomcat/maven-plugin/trunk/tomcat6-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat6/RunMojo.java (original)
+++ tomcat/maven-plugin/trunk/tomcat6-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat6/RunMojo.java Sat Nov 5 22:49:59 2011
@@ -22,10 +22,12 @@ package org.apache.tomcat.maven.plugin.t
import org.apache.catalina.Context;
import org.apache.catalina.loader.WebappLoader;
import org.apache.catalina.startup.Embedded;
+import org.apache.commons.io.FileUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.tomcat.maven.common.run.ClassLoaderEntriesCalculator;
import org.apache.tomcat.maven.common.run.ClassLoaderEntriesCalculatorRequest;
+import org.apache.tomcat.maven.common.run.ClassLoaderEntriesCalculatorResult;
import org.apache.tomcat.maven.common.run.TomcatRunException;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -167,7 +169,29 @@ public class RunMojo
new ClassLoaderEntriesCalculatorRequest().setDependencies( dependencies ).setLog(
getLog() ).setMavenProject( project ).setAddWarDependenciesInClassloader(
addWarDependenciesInClassloader ).setUseTestClassPath( useTestClasspath );
- List<String> classLoaderEntries = classLoaderEntriesCalculator.calculateClassPathEntries( request );
+ ClassLoaderEntriesCalculatorResult classLoaderEntriesCalculatorResult =
+ classLoaderEntriesCalculator.calculateClassPathEntries( request );
+ List<String> classLoaderEntries = classLoaderEntriesCalculatorResult.getClassPathEntries();
+ final List<File> tmpDirectories = classLoaderEntriesCalculatorResult.getTmpDirectories();
+
+ Runtime.getRuntime().addShutdownHook( new Thread()
+ {
+ @Override
+ public void run()
+ {
+ for ( File tmpDir : tmpDirectories )
+ {
+ try
+ {
+ FileUtils.deleteDirectory( tmpDir );
+ }
+ catch ( IOException e )
+ {
+ // ignore
+ }
+ }
+ }
+ } );
if ( classLoaderEntries != null )
{
Modified: tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java
URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java?rev=1198103&r1=1198102&r2=1198103&view=diff
==============================================================================
--- tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java (original)
+++ tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java Sat Nov 5 22:49:59 2011
@@ -70,7 +70,7 @@ import java.util.Set;
* @since 2.0
*/
public abstract class AbstractRunMojo
- extends AbstractTomcat7Mojo
+ extends AbstractTomcat7Mojo
{
// ----------------------------------------------------------------------
// Mojo Parameters
@@ -314,6 +314,7 @@ public abstract class AbstractRunMojo
*/
private File tomcatLoggingFile;
+
// ----------------------------------------------------------------------
// Fields
// ----------------------------------------------------------------------
Modified: tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/RunMojo.java
URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/RunMojo.java?rev=1198103&r1=1198102&r2=1198103&view=diff
==============================================================================
--- tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/RunMojo.java (original)
+++ tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/RunMojo.java Sat Nov 5 22:49:59 2011
@@ -19,10 +19,12 @@ package org.apache.tomcat.maven.plugin.t
*/
import org.apache.catalina.loader.WebappLoader;
+import org.apache.commons.io.FileUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.tomcat.maven.common.run.ClassLoaderEntriesCalculator;
import org.apache.tomcat.maven.common.run.ClassLoaderEntriesCalculatorRequest;
+import org.apache.tomcat.maven.common.run.ClassLoaderEntriesCalculatorResult;
import org.apache.tomcat.maven.common.run.TomcatRunException;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -227,7 +229,29 @@ public class RunMojo
new ClassLoaderEntriesCalculatorRequest().setDependencies( dependencies ).setLog(
getLog() ).setMavenProject( project ).setAddWarDependenciesInClassloader(
addWarDependenciesInClassloader ).setUseTestClassPath( useTestClasspath );
- List<String> classLoaderEntries = classLoaderEntriesCalculator.calculateClassPathEntries( request );
+ ClassLoaderEntriesCalculatorResult classLoaderEntriesCalculatorResult =
+ classLoaderEntriesCalculator.calculateClassPathEntries( request );
+ List<String> classLoaderEntries = classLoaderEntriesCalculatorResult.getClassPathEntries();
+ final List<File> tmpDirectories = classLoaderEntriesCalculatorResult.getTmpDirectories();
+
+ Runtime.getRuntime().addShutdownHook( new Thread()
+ {
+ @Override
+ public void run()
+ {
+ for ( File tmpDir : tmpDirectories )
+ {
+ try
+ {
+ FileUtils.deleteDirectory( tmpDir );
+ }
+ catch ( IOException e )
+ {
+ // ignore
+ }
+ }
+ }
+ } );
if ( classLoaderEntries != null )
{
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org