Revert "IDEA-208029 - maven before run fix" to fix IDEA-208307

This reverts commit 4f6a5dcc
This commit is contained in:
Nikita Skvortsov
2019-03-03 23:36:10 +03:00
parent 2d52e24a33
commit 38d53817cf
5 changed files with 25 additions and 40 deletions
@@ -51,17 +51,14 @@ public class BuildViewMavenConsole extends MavenConsole {
private final BuildView myBuildView;
@NotNull
private final String myTitle;
private final long myExecutionId;
public BuildViewMavenConsole(@NotNull Project project,
@NotNull String title,
@NotNull String workingDir,
@NotNull String toolWindowId,
long executionId) {
@NotNull String toolWindowId) {
super(getSettings(project).getOutputLevel(), getSettings(project).isPrintErrorStackTraces());
myProject = project;
myTitle = title;
myExecutionId = executionId;
ExternalSystemTaskId taskId = ExternalSystemTaskId.create(MavenUtil.SYSTEM_ID, EXECUTE_TASK, project);
DefaultBuildDescriptor descriptor = new DefaultBuildDescriptor(taskId, "Run Maven task", workingDir, System.currentTimeMillis());
@@ -92,7 +89,6 @@ public class BuildViewMavenConsole extends MavenConsole {
JComponent consolePanel = createConsolePanel(myBuildView, actions);
RunContentDescriptor descriptor =
new RunContentDescriptor(myBuildView, processHandler, consolePanel, myTitle, MavenIcons.MavenLogo);
descriptor.setExecutionId(myExecutionId);
Disposer.register(descriptor, myBuildView);
ExecutionManager.getInstance(myProject).getContentManager().showRunContent(DefaultRunExecutor.getRunExecutorInstance(), descriptor);
});
@@ -167,11 +163,6 @@ public class BuildViewMavenConsole extends MavenConsole {
public boolean isBuildContentView() {
return true;
}
}){
@Override
public void dispose() {
super.dispose();
}
};
});
}
}
@@ -56,7 +56,7 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
public void run(final MavenRunnerParameters parameters, final MavenRunnerSettings settings, final Runnable onComplete) {
FileDocumentManager.getInstance().saveAllDocuments();
final MavenConsole console = createConsole(myProject, parameters.getWorkingDirPath(), StringUtil.join(parameters.getGoals(), ", "), 0);
final MavenConsole console = createConsole(StringUtil.join(parameters.getGoals(), ", "), parameters.getWorkingDirPath());
try {
final MavenExecutor executor = createExecutor(parameters, null, settings, console);
@@ -112,8 +112,7 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
@Nullable MavenRunnerSettings runnerSettings,
@Nullable final String action,
@Nullable ProgressIndicator indicator) {
return runBatch(commands, coreSettings, runnerSettings, action, indicator, createConsole(myProject, myProject.getBasePath(), "Maven Batch", 0));
return runBatch(commands, coreSettings, runnerSettings, action, indicator, null);
}
public boolean runBatch(List<MavenRunnerParameters> commands,
@@ -121,11 +120,18 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
@Nullable MavenRunnerSettings runnerSettings,
@Nullable final String action,
@Nullable ProgressIndicator indicator,
@NotNull MavenConsole mavenConsole) {
@Nullable MavenConsole mavenConsole) {
LOG.assertTrue(!ApplicationManager.getApplication().isReadAccessAllowed());
if (commands.isEmpty()) return true;
MavenConsole console = mavenConsole != null ? mavenConsole
: ReadAction.compute(() -> {
if (myProject.isDisposed()) return null;
return createConsole("Maven Batch", myProject.getBasePath());
});
if (console == null) return false;
try {
int count = 0;
for (MavenRunnerParameters command : commands) {
@@ -133,9 +139,12 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
indicator.setFraction(((double)count++) / commands.size());
}
MavenExecutor executor = ReadAction.compute(() -> {
MavenExecutor executor
= ReadAction.compute(()-> {
if (myProject.isDisposed()) return null;
return createExecutor(command, coreSettings, runnerSettings, mavenConsole);
return createExecutor(command, coreSettings, runnerSettings, console);
});
if (executor == null) break;
@@ -149,38 +158,28 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
updateTargetFolders();
}
finally {
mavenConsole.finish();
console.finish();
}
return true;
}
public static MavenConsole createConsole(@NotNull Project project,
@NotNull String workingDirPath,
@NotNull String title,
long executionId) {
return ReadAction.compute(() -> {
if (project.isDisposed()) return null;
return doCreateConsole(title, workingDirPath, project, executionId);
});
}
private void updateTargetFolders() {
if (myProject.isDisposed()) return; // project was closed before task finished.
MavenProjectsManager.getInstance(myProject).updateProjectTargetFolders();
}
private static MavenConsole doCreateConsole(@NotNull String title, @NotNull String workingDirPath, Project project, long executionId) {
private MavenConsole createConsole(@NotNull String title,@NotNull String workingDirPath) {
if (ApplicationManager.getApplication().isUnitTestMode()) {
return new SoutMavenConsole();
}
return MavenConsole.createGuiMavenConsole(project, title, workingDirPath, ToolWindowId.RUN, executionId);
return MavenConsole.createGuiMavenConsole(myProject, title, workingDirPath, ToolWindowId.RUN);
}
private MavenExecutor createExecutor(MavenRunnerParameters taskParameters,
@Nullable MavenGeneralSettings coreSettings,
@Nullable MavenRunnerSettings runnerSettings,
@NotNull MavenConsole console) {
MavenConsole console) {
return new MavenExternalExecutor(myProject, taskParameters, coreSettings, runnerSettings, console);
}
}
@@ -224,8 +224,7 @@ public class MavenProjectTaskRunner extends ProjectTaskRunner {
ApplicationManager.getApplication().invokeAndWait(() -> {
AtomicInteger errors = new AtomicInteger();
AtomicInteger warnings = new AtomicInteger();
MavenConsole console = MavenConsole.createGuiMavenConsole(project, title, project.getBasePath(), ToolWindowId.BUILD, 0);
MavenConsole console = MavenConsole.createGuiMavenConsole(project, title, project.getBasePath(), ToolWindowId.BUILD);
console.addProcessListener(new ProcessAdapter() {
@Override
@@ -39,10 +39,9 @@ public abstract class MavenConsole {
public static MavenConsole createGuiMavenConsole(@NotNull Project project,
@NotNull String title,
@NotNull String workingDir,
@NotNull String toolWindowId,
long executionId) {
@NotNull String toolWindowId) {
if (Registry.is("maven.build.tool.window.enabled")) {
return new BuildViewMavenConsole(project, title, workingDir, toolWindowId, executionId);
return new BuildViewMavenConsole(project, title, workingDir, toolWindowId);
} else {
return new MavenConsoleImpl(title, project);
}
@@ -28,7 +28,6 @@ import org.jetbrains.idea.maven.execution.MavenRunner;
import org.jetbrains.idea.maven.execution.MavenRunnerParameters;
import org.jetbrains.idea.maven.model.MavenConstants;
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
import org.jetbrains.idea.maven.project.MavenConsole;
import org.jetbrains.idea.maven.project.MavenProject;
import org.jetbrains.idea.maven.project.MavenProjectsManager;
import org.jetbrains.idea.maven.utils.MavenLog;
@@ -170,7 +169,6 @@ public class MavenBeforeRunTasksProvider extends BeforeRunTaskProvider<MavenBefo
final MavenExplicitProfiles explicitProfiles = MavenProjectsManager.getInstance(project).getExplicitProfiles();
final MavenRunner mavenRunner = MavenRunner.getInstance(project);
final MavenConsole console = MavenRunner.createConsole(myProject, myProject.getBasePath(), "Maven: " + task.getGoal(), env.getExecutionId());
targetDone.down();
new Task.Backgroundable(project, TasksBundle.message("maven.tasks.executing"), true) {
@@ -189,8 +187,7 @@ public class MavenBeforeRunTasksProvider extends BeforeRunTaskProvider<MavenBefo
null,
null,
TasksBundle.message("maven.tasks.executing"),
indicator,
console);
indicator);
}
finally {
targetDone.up();