You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2012/10/06 23:15:34 UTC

svn commit: r1395172 - in /maven/shared/trunk/maven-invoker/src: main/java/org/apache/maven/shared/invoker/ test/java/org/apache/maven/shared/invoker/

Author: rfscholte
Date: Sat Oct  6 21:15:33 2012
New Revision: 1395172

URL: http://svn.apache.org/viewvc?rev=1395172&view=rev
Log:
[MSHARED-251] Option to change from mvn executable to mvnDebug executable

Modified:
    maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvoker.java
    maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/Invoker.java
    maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java
    maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java

Modified: maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvoker.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvoker.java?rev=1395172&r1=1395171&r2=1395172&view=diff
==============================================================================
--- maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvoker.java (original)
+++ maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvoker.java Sat Oct  6 21:15:33 2012
@@ -50,6 +50,8 @@ public class DefaultInvoker
 
     private File mavenHome;
 
+    private File mavenExecutable;
+
     private InvocationOutputHandler outputHandler = DEFAULT_OUTPUT_HANDLER;
 
     private InputStream inputStream;
@@ -78,6 +80,13 @@ public class DefaultInvoker
         {
             cliBuilder.setMavenHome( getMavenHome() );
         }
+        
+        File mavenExecutable = getMavenExecutable();
+        if ( mavenExecutable != null )
+        {
+            cliBuilder.setMavenExecutable( mavenExecutable );
+        }
+        
 
         File workingDirectory = getWorkingDirectory();
         if ( workingDirectory != null )
@@ -197,6 +206,17 @@ public class DefaultInvoker
         return this;
     }
 
+    public File getMavenExecutable()
+    {
+        return mavenExecutable;
+    }
+
+    public Invoker setMavenExecutable( File mavenExecutable )
+    {
+        this.mavenExecutable = mavenExecutable;
+        return this;
+    }
+
     public Invoker setErrorHandler( InvocationOutputHandler errorHandler )
     {
         this.errorHandler = errorHandler;

Modified: maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/Invoker.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/Invoker.java?rev=1395172&r1=1395171&r2=1395172&view=diff
==============================================================================
--- maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/Invoker.java (original)
+++ maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/Invoker.java Sat Oct  6 21:15:33 2012
@@ -96,6 +96,21 @@ public interface Invoker
     Invoker setMavenHome( File mavenHome );
 
     /**
+     * Get the customized File of the Maven executable.
+     * 
+     * @return the custom Maven executable, otherwise {@code null} 
+     */
+    File getMavenExecutable();
+
+    /**
+     * {@code mavenExecutable} can either be a file relative to ${maven.home}/bin/ or an absolute file.
+     * 
+     * @param mavenExecutable the executable
+     * @return This invoker instance
+     */
+    Invoker setMavenExecutable( File mavenExecutable );
+
+    /**
      * Sets the path to the base directory of the local repository to use for the Maven invocation.
      * 
      * @param localRepositoryDirectory The path to the base directory of the local repository or <code>null</code> to
@@ -147,5 +162,4 @@ public interface Invoker
      * @return This invoker instance.
      */
     Invoker setErrorHandler( InvocationOutputHandler errorHandler );
-
 }

Modified: maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java?rev=1395172&r1=1395171&r2=1395172&view=diff
==============================================================================
--- maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java (original)
+++ maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java Sat Oct  6 21:15:33 2012
@@ -47,7 +47,7 @@ public class MavenCommandLineBuilder
 
     private File mavenHome;
 
-    private File mvnCommand;
+    private File mavenExecutable;
 
     private Properties systemEnvVars;
 
@@ -564,34 +564,41 @@ public class MavenCommandLineBuilder
 
         logger.debug( "Using ${maven.home} of: \'" + mavenHome + "\'." );
 
-        if ( mvnCommand == null )
+        if ( mavenExecutable == null || !mavenExecutable.isAbsolute() )
         {
-            if ( Os.isFamily( "windows" ) )
+            String executable;
+            if( mavenExecutable != null )
             {
-                mvnCommand = new File( mavenHome, "/bin/mvn.bat" );
+                executable = mavenExecutable.getPath();
+            }
+            else if ( Os.isFamily( "windows" ) )
+            {
+                executable = "mvn.bat";
             }
             else
             {
-                mvnCommand = new File( mavenHome, "/bin/mvn" );
+                executable = "mvn";
             }
-
+            
+            mavenExecutable = new File( mavenHome, "/bin/" + executable );
+            
             try
             {
-                File canonicalMvn = mvnCommand.getCanonicalFile();
-                mvnCommand = canonicalMvn;
+                File canonicalMvn = mavenExecutable.getCanonicalFile();
+                mavenExecutable = canonicalMvn;
             }
             catch ( IOException e )
             {
-                logger.debug( "Failed to canonicalize maven executable: " + mvnCommand + ". Using as-is.", e );
+                logger.debug( "Failed to canonicalize maven executable: " + mavenExecutable + ". Using as-is.", e );
             }
 
-            if ( !mvnCommand.exists() )
+            if ( !mavenExecutable.isFile() )
             {
-                throw new CommandLineConfigurationException( "Maven executable not found at: " + mvnCommand );
+                throw new CommandLineConfigurationException( "Maven executable not found at: " + mavenExecutable );
             }
         }
 
-        return mvnCommand;
+        return mavenExecutable;
     }
 
     /**
@@ -664,4 +671,19 @@ public class MavenCommandLineBuilder
         this.workingDirectory = workingDirectory;
     }
 
+    /**
+     * {@code mavenExecutable} can either be relative to ${maven.home}/bin/ or absolute 
+     * 
+     * @param mavenExecutable the executable
+     */
+    public void setMavenExecutable( File mavenExecutable )
+    {
+        this.mavenExecutable = mavenExecutable;
+    }
+
+    public File getMavenExecutable()
+    {
+        return mavenExecutable;
+    }
+
 }

Modified: maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java?rev=1395172&r1=1395171&r2=1395172&view=diff
==============================================================================
--- maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java (original)
+++ maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java Sat Oct  6 21:15:33 2012
@@ -1105,7 +1105,17 @@ public class MavenCommandLineBuilderTest
 
         assertArgumentsPresentInOrder( commandline, "-P", profile1 + "," + profile2 );
     }
-
+    
+    public void testMvnCommand() throws Exception
+    {
+        MavenCommandLineBuilder commandLineBuilder = new MavenCommandLineBuilder();
+        File mavenExecutable = new File ( "mvnDebug" );
+        commandLineBuilder.setMavenExecutable( mavenExecutable );
+        File executable = commandLineBuilder.findMavenExecutable();
+        assertTrue( "Expected executable to exist",  executable.exists() );
+        assertTrue( "Expected executable to be absolute", executable.isAbsolute() );
+    }
+    
     public void setUp()
     {
         sysProps = System.getProperties();