You are viewing a plain text version of this content. The canonical link for it is here.
Posted to surefire-commits@maven.apache.org by kr...@apache.org on 2011/04/19 21:25:59 UTC

svn commit: r1095173 - in /maven/surefire/trunk: maven-failsafe-plugin/src/site/apt/examples/ maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ maven-surefire-plugin/src/site/apt/examples/

Author: krosenvold
Date: Tue Apr 19 19:25:58 2011
New Revision: 1095173

URL: http://svn.apache.org/viewvc?rev=1095173&view=rev
Log:
[SUREFIRE-727] Classpath too long on windows with useManifestOnlyJar=false

Modified:
    maven/surefire/trunk/maven-failsafe-plugin/src/site/apt/examples/class-loading.apt.vm
    maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java
    maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/class-loading.apt.vm

Modified: maven/surefire/trunk/maven-failsafe-plugin/src/site/apt/examples/class-loading.apt.vm
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-failsafe-plugin/src/site/apt/examples/class-loading.apt.vm?rev=1095173&r1=1095172&r2=1095173&view=diff
==============================================================================
--- maven/surefire/trunk/maven-failsafe-plugin/src/site/apt/examples/class-loading.apt.vm (original)
+++ maven/surefire/trunk/maven-failsafe-plugin/src/site/apt/examples/class-loading.apt.vm Tue Apr 19 19:25:58 2011
@@ -48,7 +48,13 @@ java -classpath foo.jar:bar.jar MyApp
  your command line, and therefore a limit on how long you can make your classpath. The limit is different
  on different versions of Windows; in some versions only a few hundred characters are allowed, in others
  a few thousand, but the limit can be pretty severe in either case.
- 
+
+ * Update for Surefire 2.8.2
+
+It turns out setting the CLASSPATH as an environment variable may remove most of the
+practical length limitations, as documented in http://jira.codehaus.org/browse/SUREFIRE-727. This means
+most of the length-related problems in this article may be outdated.
+
 * How do people solve this problem in general?
 
  There are two "tricks" you can use to workaround this problem; both of them are can cause other problems in some cases.

Modified: maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java?rev=1095173&r1=1095172&r2=1095173&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java (original)
+++ maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java Tue Apr 19 19:25:58 2011
@@ -19,15 +19,6 @@ package org.apache.maven.plugin.surefire
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
-import org.apache.maven.surefire.booter.Classpath;
-import org.apache.maven.surefire.booter.ForkedBooter;
-import org.apache.maven.surefire.booter.SurefireBooterForkException;
-import org.apache.maven.surefire.util.Relocator;
-import org.apache.maven.surefire.util.UrlUtils;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.cli.Commandline;
-
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -39,6 +30,14 @@ import java.util.Properties;
 import java.util.jar.JarEntry;
 import java.util.jar.JarOutputStream;
 import java.util.jar.Manifest;
+import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
+import org.apache.maven.surefire.booter.Classpath;
+import org.apache.maven.surefire.booter.ForkedBooter;
+import org.apache.maven.surefire.booter.SurefireBooterForkException;
+import org.apache.maven.surefire.util.Relocator;
+import org.apache.maven.surefire.util.UrlUtils;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.Commandline;
 
 /**
  * Configuration for forking tests.
@@ -160,7 +159,7 @@ public class ForkConfiguration
     /**
      * @param classPath              cla the classpath arguments
      * @param classpathConfiguration the classpath configuration
-     * @param shadefire true if running shadefire
+     * @param shadefire              true if running shadefire
      * @return A commandline
      * @throws org.apache.maven.surefire.booter.SurefireBooterForkException
      *          when unable to perform the fork
@@ -221,13 +220,11 @@ public class ForkConfiguration
         }
         else
         {
-            cli.createArg().setValue( "-classpath" );
-
-            cli.createArg().setValue( StringUtils.join( classPath.iterator(), File.pathSeparator ) );
+            cli.addEnvironment( "CLASSPATH", StringUtils.join( classPath.iterator(), File.pathSeparator ) );
 
             final String forkedBooter = ForkedBooter.class.getName();
 
-            cli.createArg().setValue( shadefire ? new Relocator( ).relocate( forkedBooter ) : forkedBooter);
+            cli.createArg().setValue( shadefire ? new Relocator().relocate( forkedBooter ) : forkedBooter );
         }
 
         cli.setWorkingDirectory( workingDirectory.getAbsolutePath() );

Modified: maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/class-loading.apt.vm
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/class-loading.apt.vm?rev=1095173&r1=1095172&r2=1095173&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/class-loading.apt.vm (original)
+++ maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/class-loading.apt.vm Tue Apr 19 19:25:58 2011
@@ -47,6 +47,13 @@ java -classpath foo.jar:bar.jar MyApp
  your command line, and therefore a limit on how long you can make your classpath. The limit is different
  on different versions of Windows; in some versions only a few hundred characters are allowed, in others
  a few thousand, but the limit can be pretty severe in either case.
+
+* Update for Surefire 2.8.2
+
+It turns out setting the CLASSPATH as an environment variable may remove most of the
+practical length limitations, as documented in http://jira.codehaus.org/browse/SUREFIRE-727. This means
+most of the length-related problems in this article may be outdated.
+
  
 * How do people solve this problem in general?