You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2006/11/09 14:20:37 UTC
svn commit: r472890 - in
/maven/components/branches/maven-2.0.x/maven-core/src:
main/java/org/apache/maven/cli/MavenCli.java
test/java/org/apache/maven/cli/MavenCliTest.java
Author: vsiveton
Date: Thu Nov 9 05:20:36 2006
New Revision: 472890
URL: http://svn.apache.org/viewvc?view=rev&rev=472890
Log:
MNG-2413: maven version insistence based on wrong variable
o using "java.specification.version" instead of "java.class.version" to verify JDK 1.4 or above
o added test case
Added:
maven/components/branches/maven-2.0.x/maven-core/src/test/java/org/apache/maven/cli/MavenCliTest.java (with props)
Modified:
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java
Modified: maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java?view=diff&rev=472890&r1=472889&r2=472890
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java (original)
+++ maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java Thu Nov 9 05:20:36 2006
@@ -1,7 +1,7 @@
package org.apache.maven.cli;
/*
- * Copyright 2001-2005 The Apache Software Foundation.
+ * Copyright 2001-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -94,11 +94,17 @@
}
// TODO: maybe classworlds could handle this requirement...
- if ( System.getProperty( "java.class.version", "44.0" ).compareTo( "48.0" ) < 0 )
+ if ( "1.4".compareTo( System.getProperty( "java.specification.version" ) ) > 0 )
{
- System.err.println( "Sorry, but JDK 1.4 or above is required to execute Maven" );
- System.err.println(
- "You appear to be using Java version: " + System.getProperty( "java.version", "<unknown>" ) );
+ System.err.println( "Sorry, but JDK 1.4 or above is required to execute Maven. You appear to be using "
+ + "Java:" );
+ System.err.println( "java version \"" + System.getProperty( "java.version", "<unknown java version>" )
+ + "\"" );
+ System.err.println( System.getProperty( "java.runtime.name", "<unknown runtime name>" ) + " (build "
+ + System.getProperty( "java.runtime.version", "<unknown runtime version>" ) + ")" );
+ System.err.println( System.getProperty( "java.vm.name", "<unknown vm name>" ) + " (build "
+ + System.getProperty( "java.vm.version", "<unknown vm version>" ) + ", "
+ + System.getProperty( "java.vm.info", "<unknown vm info>" ) + ")" );
return 1;
}
@@ -121,7 +127,7 @@
cliManager.displayHelp();
return 0;
}
-
+
if ( commandLine.hasOption( CLIManager.VERSION ) )
{
showVersion();
@@ -515,15 +521,15 @@
resourceAsStream = MavenCli.class.getClassLoader().getResourceAsStream(
"META-INF/maven/org.apache.maven/maven-core/pom.properties" );
properties.load( resourceAsStream );
-
+
if( properties.getProperty( "builtOn" ) != null )
{
- System.out.println( "Maven version: " + properties.getProperty( "version", "unknown" )
- + " built on " + properties.getProperty( "builtOn" ) );
+ System.out.println( "Maven version: " + properties.getProperty( "version", "unknown" )
+ + " built on " + properties.getProperty( "builtOn" ) );
}
else
{
- System.out.println( "Maven version: " + properties.getProperty( "version", "unknown" ) );
+ System.out.println( "Maven version: " + properties.getProperty( "version", "unknown" ) );
}
}
catch ( IOException e )
@@ -719,25 +725,25 @@
{
// We need to eat any quotes surrounding arguments...
String[] cleanArgs = cleanArgs( args );
-
+
CommandLineParser parser = new GnuParser();
return parser.parse( options, cleanArgs );
}
-
+
private String[] cleanArgs( String[] args )
{
List cleaned = new ArrayList();
-
+
StringBuffer currentArg = null;
-
+
for ( int i = 0; i < args.length; i++ )
{
String arg = args[i];
-
+
// System.out.println( "Processing raw arg: " + arg );
-
+
boolean addedToBuffer = false;
-
+
if ( arg.startsWith( "\"" ) )
{
// if we're in the process of building up another arg, push it and start over.
@@ -747,17 +753,17 @@
// System.out.println( "Flushing last arg buffer: \'" + currentArg + "\' to cleaned list." );
cleaned.add( currentArg.toString() );
}
-
+
// start building an argument here.
currentArg = new StringBuffer( arg.substring( 1 ) );
addedToBuffer = true;
}
-
+
// this has to be a separate "if" statement, to capture the case of: "-Dfoo=bar"
if ( arg.endsWith( "\"" ) )
{
String cleanArgPart = arg.substring( 0, arg.length() - 1 );
-
+
// if we're building an argument, keep doing so.
if ( currentArg != null )
{
@@ -774,9 +780,9 @@
// TODO: introducing a space here...not sure what else to do but collapse whitespace
currentArg.append( ' ' ).append( cleanArgPart );
}
-
+
// System.out.println( "Flushing completed arg buffer: \'" + currentArg + "\' to cleaned list." );
-
+
// we're done with this argument, so add it.
cleaned.add( currentArg.toString() );
}
@@ -786,13 +792,13 @@
// this is a simple argument...just add it.
cleaned.add( cleanArgPart );
}
-
+
// System.out.println( "Clearing arg buffer." );
// the currentArg MUST be finished when this completes.
currentArg = null;
continue;
}
-
+
// if we haven't added this arg to the buffer, and we ARE building an argument
// buffer, then append it with a preceding space...again, not sure what else to
// do other than collapse whitespace.
@@ -813,17 +819,17 @@
}
}
}
-
+
// clean up.
if ( currentArg != null )
{
// System.out.println( "Adding unterminated arg buffer: \'" + currentArg + "\' to cleaned list." );
cleaned.add( currentArg.toString() );
}
-
+
int cleanedSz = cleaned.size();
String[] cleanArgs = null;
-
+
if ( cleanedSz == 0 )
{
// if we didn't have any arguments to clean, simply pass the original array through
@@ -834,7 +840,7 @@
// System.out.println( "Cleaned argument list:\n" + cleaned );
cleanArgs = (String[]) cleaned.toArray( new String[cleanedSz] );
}
-
+
return cleanArgs;
}
Added: maven/components/branches/maven-2.0.x/maven-core/src/test/java/org/apache/maven/cli/MavenCliTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-core/src/test/java/org/apache/maven/cli/MavenCliTest.java?view=auto&rev=472890
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-core/src/test/java/org/apache/maven/cli/MavenCliTest.java (added)
+++ maven/components/branches/maven-2.0.x/maven-core/src/test/java/org/apache/maven/cli/MavenCliTest.java Thu Nov 9 05:20:36 2006
@@ -0,0 +1,79 @@
+package org.apache.maven.cli;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+import org.codehaus.classworlds.ClassWorld;
+import org.codehaus.plexus.util.StringOutputStream;
+
+import junit.framework.TestCase;
+
+/**
+ * Test method for 'org.apache.maven.cli.MavenCli.main(String[], ClassWorld)'
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public class MavenCliTest
+ extends TestCase
+{
+ /**
+ * Test that JDK 1.4 or above is required to execute MavenCli
+ *
+ * @throws Exception
+ */
+ public void testMain()
+ throws Exception
+ {
+ ClassWorld classWorld = new ClassWorld();
+
+ PrintStream oldErr = System.err;
+ PrintStream oldOut = System.out;
+
+ OutputStream errOS = new StringOutputStream();
+ PrintStream err = new PrintStream( errOS );
+ System.setErr( err );
+ OutputStream outOS = new StringOutputStream();
+ PrintStream out = new PrintStream( outOS );
+ System.setOut( out );
+
+ try
+ {
+ System.setProperty( "java.specification.version", "1.0" );
+ assertEquals( 1, MavenCli.main( new String[] { "-h" }, classWorld ) );
+ System.setProperty( "java.specification.version", "1.1" );
+ assertEquals( 1, MavenCli.main( new String[] { "-h" }, classWorld ) );
+ System.setProperty( "java.specification.version", "1.2" );
+ assertEquals( 1, MavenCli.main( new String[] { "-h" }, classWorld ) );
+ System.setProperty( "java.specification.version", "1.3" );
+ assertEquals( 1, MavenCli.main( new String[] { "-h" }, classWorld ) );
+ System.setProperty( "java.specification.version", "1.4" );
+ assertEquals( 0, MavenCli.main( new String[] { "-h" }, classWorld ) );
+ System.setProperty( "java.specification.version", "1.5" );
+ assertEquals( 0, MavenCli.main( new String[] { "-h" }, classWorld ) );
+ System.setProperty( "java.specification.version", "1.6" );
+ assertEquals( 0, MavenCli.main( new String[] { "-h" }, classWorld ) );
+ }
+ finally
+ {
+ System.setErr( oldErr );
+ System.setErr( oldOut );
+ }
+ }
+}
Propchange: maven/components/branches/maven-2.0.x/maven-core/src/test/java/org/apache/maven/cli/MavenCliTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/maven-2.0.x/maven-core/src/test/java/org/apache/maven/cli/MavenCliTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"