package org.eclipse.maven.core;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.maven.shared.invoker.DefaultInvocationRequest;
import org.apache.maven.shared.invoker.DefaultInvoker;
import org.apache.maven.shared.invoker.InvocationOutputHandler;
import org.apache.maven.shared.invoker.InvocationRequest;
import org.apache.maven.shared.invoker.Invoker;
import org.apache.maven.shared.invoker.PrintStreamHandler;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.maven.Activator;
import org.eclipse.ui.statushandlers.StatusManager;
public class MavenCommandRunner implements Runnable {
private MavenCommand command;
private OutPutHandler outPutHandler;
private String pomLocation;
public MavenCommandRunner(MavenCommand command, String pomLocation, OutPutHandler outPutHandler) {
this.command = command;
this.pomLocation = pomLocation;
this.outPutHandler = outPutHandler;
}
public void run() {
try {
InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile( new File( pomLocation ) );
String javaHome = PreferenceResolver.resolveJavaHome();
if ( javaHome != null )
request.setJavaHome(new File(javaHome));
List<String> lifeCycle = new ArrayList<String>();
lifeCycle.add(command.getCommandLine());
request.setGoals(lifeCycle);
Invoker invoker = new DefaultInvoker();
invoker.setMavenHome(new File(PreferenceResolver.resolveMavenHome()));
InvocationOutputHandler outHandler = new PrintStreamHandler(outPutHandler.getPrintStream(), false);
invoker.setOutputHandler(outHandler);
invoker.setErrorHandler(outHandler);
invoker.execute( request );
} catch (Exception e) {
StatusManager
.getManager()
.handle(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
"There was an error during the execution of the maven command.", e),
StatusManager.SHOW);
}
}
}