mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-208029 - maven before run fix
This commit is contained in:
+11
-2
@@ -51,14 +51,17 @@ 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) {
|
||||
@NotNull String toolWindowId,
|
||||
long executionId) {
|
||||
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());
|
||||
|
||||
@@ -89,6 +92,7 @@ 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);
|
||||
});
|
||||
@@ -163,6 +167,11 @@ 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(StringUtil.join(parameters.getGoals(), ", "), parameters.getWorkingDirPath());
|
||||
final MavenConsole console = createConsole(myProject, parameters.getWorkingDirPath(), StringUtil.join(parameters.getGoals(), ", "), 0);
|
||||
try {
|
||||
final MavenExecutor executor = createExecutor(parameters, null, settings, console);
|
||||
|
||||
@@ -112,7 +112,8 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
|
||||
@Nullable MavenRunnerSettings runnerSettings,
|
||||
@Nullable final String action,
|
||||
@Nullable ProgressIndicator indicator) {
|
||||
return runBatch(commands, coreSettings, runnerSettings, action, indicator, null);
|
||||
|
||||
return runBatch(commands, coreSettings, runnerSettings, action, indicator, createConsole(myProject, myProject.getBasePath(), "Maven Batch", 0));
|
||||
}
|
||||
|
||||
public boolean runBatch(List<MavenRunnerParameters> commands,
|
||||
@@ -120,18 +121,11 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
|
||||
@Nullable MavenRunnerSettings runnerSettings,
|
||||
@Nullable final String action,
|
||||
@Nullable ProgressIndicator indicator,
|
||||
@Nullable MavenConsole mavenConsole) {
|
||||
@NotNull 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) {
|
||||
@@ -139,12 +133,9 @@ 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, console);
|
||||
return createExecutor(command, coreSettings, runnerSettings, mavenConsole);
|
||||
});
|
||||
if (executor == null) break;
|
||||
|
||||
@@ -158,28 +149,38 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
|
||||
updateTargetFolders();
|
||||
}
|
||||
finally {
|
||||
console.finish();
|
||||
mavenConsole.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 MavenConsole createConsole(@NotNull String title,@NotNull String workingDirPath) {
|
||||
private static MavenConsole doCreateConsole(@NotNull String title, @NotNull String workingDirPath, Project project, long executionId) {
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
return new SoutMavenConsole();
|
||||
}
|
||||
return MavenConsole.createGuiMavenConsole(myProject, title, workingDirPath, ToolWindowId.RUN);
|
||||
return MavenConsole.createGuiMavenConsole(project, title, workingDirPath, ToolWindowId.RUN, executionId);
|
||||
}
|
||||
|
||||
private MavenExecutor createExecutor(MavenRunnerParameters taskParameters,
|
||||
@Nullable MavenGeneralSettings coreSettings,
|
||||
@Nullable MavenRunnerSettings runnerSettings,
|
||||
MavenConsole console) {
|
||||
@NotNull MavenConsole console) {
|
||||
return new MavenExternalExecutor(myProject, taskParameters, coreSettings, runnerSettings, console);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -224,7 +224,8 @@ 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);
|
||||
MavenConsole console = MavenConsole.createGuiMavenConsole(project, title, project.getBasePath(), ToolWindowId.BUILD, 0);
|
||||
|
||||
console.addProcessListener(new ProcessAdapter() {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -39,9 +39,10 @@ public abstract class MavenConsole {
|
||||
public static MavenConsole createGuiMavenConsole(@NotNull Project project,
|
||||
@NotNull String title,
|
||||
@NotNull String workingDir,
|
||||
@NotNull String toolWindowId) {
|
||||
@NotNull String toolWindowId,
|
||||
long executionId) {
|
||||
if (Registry.is("maven.build.tool.window.enabled")) {
|
||||
return new BuildViewMavenConsole(project, title, workingDir, toolWindowId);
|
||||
return new BuildViewMavenConsole(project, title, workingDir, toolWindowId, executionId);
|
||||
} else {
|
||||
return new MavenConsoleImpl(title, project);
|
||||
}
|
||||
|
||||
+4
-1
@@ -28,6 +28,7 @@ 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;
|
||||
@@ -169,6 +170,7 @@ 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) {
|
||||
@@ -187,7 +189,8 @@ public class MavenBeforeRunTasksProvider extends BeforeRunTaskProvider<MavenBefo
|
||||
null,
|
||||
null,
|
||||
TasksBundle.message("maven.tasks.executing"),
|
||||
indicator);
|
||||
indicator,
|
||||
console);
|
||||
}
|
||||
finally {
|
||||
targetDone.up();
|
||||
|
||||
Reference in New Issue
Block a user