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();