package org.eclipse.maven.core;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
public class MavenExecutor extends Job {
private MavenCommand mavenCommand;
private String pomLocation;
public MavenExecutor(MavenCommand command, String pomLocation) {
super("MavenExecutor");
this.mavenCommand = command;
this.pomLocation = pomLocation;
}
@Override
protected IStatus run(IProgressMonitor monitor) {
OutPutHandler outPutHandler = new OutPutHandler();
Thread consoleThread = new Thread(outPutHandler);
MavenCommandRunner runner = new MavenCommandRunner(mavenCommand, pomLocation,
outPutHandler);
setThread(new Thread(runner));
try {
consoleThread.start();
getThread().start();
getThread().join();
outPutHandler.outPutEnd();
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
try {
root.refreshLocal(IWorkspaceRoot.DEPTH_INFINITE, null);
} catch (CoreException e) {
e.printStackTrace();
}
} catch (InterruptedException iex) {
}
return Status.OK_STATUS;
}
@Override
protected void canceling() {
getThread().interrupt();
super.canceling();
}
}