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;
|
private final BuildView myBuildView;
|
||||||
@NotNull
|
@NotNull
|
||||||
private final String myTitle;
|
private final String myTitle;
|
||||||
|
private final long myExecutionId;
|
||||||
|
|
||||||
public BuildViewMavenConsole(@NotNull Project project,
|
public BuildViewMavenConsole(@NotNull Project project,
|
||||||
@NotNull String title,
|
@NotNull String title,
|
||||||
@NotNull String workingDir,
|
@NotNull String workingDir,
|
||||||
@NotNull String toolWindowId) {
|
@NotNull String toolWindowId,
|
||||||
|
long executionId) {
|
||||||
super(getSettings(project).getOutputLevel(), getSettings(project).isPrintErrorStackTraces());
|
super(getSettings(project).getOutputLevel(), getSettings(project).isPrintErrorStackTraces());
|
||||||
myProject = project;
|
myProject = project;
|
||||||
myTitle = title;
|
myTitle = title;
|
||||||
|
myExecutionId = executionId;
|
||||||
ExternalSystemTaskId taskId = ExternalSystemTaskId.create(MavenUtil.SYSTEM_ID, EXECUTE_TASK, project);
|
ExternalSystemTaskId taskId = ExternalSystemTaskId.create(MavenUtil.SYSTEM_ID, EXECUTE_TASK, project);
|
||||||
DefaultBuildDescriptor descriptor = new DefaultBuildDescriptor(taskId, "Run Maven task", workingDir, System.currentTimeMillis());
|
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);
|
JComponent consolePanel = createConsolePanel(myBuildView, actions);
|
||||||
RunContentDescriptor descriptor =
|
RunContentDescriptor descriptor =
|
||||||
new RunContentDescriptor(myBuildView, processHandler, consolePanel, myTitle, MavenIcons.MavenLogo);
|
new RunContentDescriptor(myBuildView, processHandler, consolePanel, myTitle, MavenIcons.MavenLogo);
|
||||||
|
descriptor.setExecutionId(myExecutionId);
|
||||||
Disposer.register(descriptor, myBuildView);
|
Disposer.register(descriptor, myBuildView);
|
||||||
ExecutionManager.getInstance(myProject).getContentManager().showRunContent(DefaultRunExecutor.getRunExecutorInstance(), descriptor);
|
ExecutionManager.getInstance(myProject).getContentManager().showRunContent(DefaultRunExecutor.getRunExecutorInstance(), descriptor);
|
||||||
});
|
});
|
||||||
@@ -163,6 +167,11 @@ public class BuildViewMavenConsole extends MavenConsole {
|
|||||||
public boolean isBuildContentView() {
|
public boolean isBuildContentView() {
|
||||||
return true;
|
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) {
|
public void run(final MavenRunnerParameters parameters, final MavenRunnerSettings settings, final Runnable onComplete) {
|
||||||
FileDocumentManager.getInstance().saveAllDocuments();
|
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 {
|
try {
|
||||||
final MavenExecutor executor = createExecutor(parameters, null, settings, console);
|
final MavenExecutor executor = createExecutor(parameters, null, settings, console);
|
||||||
|
|
||||||
@@ -112,7 +112,8 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
|
|||||||
@Nullable MavenRunnerSettings runnerSettings,
|
@Nullable MavenRunnerSettings runnerSettings,
|
||||||
@Nullable final String action,
|
@Nullable final String action,
|
||||||
@Nullable ProgressIndicator indicator) {
|
@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,
|
public boolean runBatch(List<MavenRunnerParameters> commands,
|
||||||
@@ -120,18 +121,11 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
|
|||||||
@Nullable MavenRunnerSettings runnerSettings,
|
@Nullable MavenRunnerSettings runnerSettings,
|
||||||
@Nullable final String action,
|
@Nullable final String action,
|
||||||
@Nullable ProgressIndicator indicator,
|
@Nullable ProgressIndicator indicator,
|
||||||
@Nullable MavenConsole mavenConsole) {
|
@NotNull MavenConsole mavenConsole) {
|
||||||
LOG.assertTrue(!ApplicationManager.getApplication().isReadAccessAllowed());
|
LOG.assertTrue(!ApplicationManager.getApplication().isReadAccessAllowed());
|
||||||
|
|
||||||
if (commands.isEmpty()) return true;
|
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 {
|
try {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (MavenRunnerParameters command : commands) {
|
for (MavenRunnerParameters command : commands) {
|
||||||
@@ -139,12 +133,9 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
|
|||||||
indicator.setFraction(((double)count++) / commands.size());
|
indicator.setFraction(((double)count++) / commands.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
MavenExecutor executor
|
MavenExecutor executor = ReadAction.compute(() -> {
|
||||||
|
|
||||||
= ReadAction.compute(()-> {
|
|
||||||
|
|
||||||
if (myProject.isDisposed()) return null;
|
if (myProject.isDisposed()) return null;
|
||||||
return createExecutor(command, coreSettings, runnerSettings, console);
|
return createExecutor(command, coreSettings, runnerSettings, mavenConsole);
|
||||||
});
|
});
|
||||||
if (executor == null) break;
|
if (executor == null) break;
|
||||||
|
|
||||||
@@ -158,28 +149,38 @@ public class MavenRunner implements PersistentStateComponent<MavenRunnerSettings
|
|||||||
updateTargetFolders();
|
updateTargetFolders();
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
console.finish();
|
mavenConsole.finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
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() {
|
private void updateTargetFolders() {
|
||||||
if (myProject.isDisposed()) return; // project was closed before task finished.
|
if (myProject.isDisposed()) return; // project was closed before task finished.
|
||||||
MavenProjectsManager.getInstance(myProject).updateProjectTargetFolders();
|
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()) {
|
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||||
return new SoutMavenConsole();
|
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,
|
private MavenExecutor createExecutor(MavenRunnerParameters taskParameters,
|
||||||
@Nullable MavenGeneralSettings coreSettings,
|
@Nullable MavenGeneralSettings coreSettings,
|
||||||
@Nullable MavenRunnerSettings runnerSettings,
|
@Nullable MavenRunnerSettings runnerSettings,
|
||||||
MavenConsole console) {
|
@NotNull MavenConsole console) {
|
||||||
return new MavenExternalExecutor(myProject, taskParameters, coreSettings, runnerSettings, console);
|
return new MavenExternalExecutor(myProject, taskParameters, coreSettings, runnerSettings, console);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -224,7 +224,8 @@ public class MavenProjectTaskRunner extends ProjectTaskRunner {
|
|||||||
ApplicationManager.getApplication().invokeAndWait(() -> {
|
ApplicationManager.getApplication().invokeAndWait(() -> {
|
||||||
AtomicInteger errors = new AtomicInteger();
|
AtomicInteger errors = new AtomicInteger();
|
||||||
AtomicInteger warnings = 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() {
|
console.addProcessListener(new ProcessAdapter() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -39,9 +39,10 @@ public abstract class MavenConsole {
|
|||||||
public static MavenConsole createGuiMavenConsole(@NotNull Project project,
|
public static MavenConsole createGuiMavenConsole(@NotNull Project project,
|
||||||
@NotNull String title,
|
@NotNull String title,
|
||||||
@NotNull String workingDir,
|
@NotNull String workingDir,
|
||||||
@NotNull String toolWindowId) {
|
@NotNull String toolWindowId,
|
||||||
|
long executionId) {
|
||||||
if (Registry.is("maven.build.tool.window.enabled")) {
|
if (Registry.is("maven.build.tool.window.enabled")) {
|
||||||
return new BuildViewMavenConsole(project, title, workingDir, toolWindowId);
|
return new BuildViewMavenConsole(project, title, workingDir, toolWindowId, executionId);
|
||||||
} else {
|
} else {
|
||||||
return new MavenConsoleImpl(title, project);
|
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.execution.MavenRunnerParameters;
|
||||||
import org.jetbrains.idea.maven.model.MavenConstants;
|
import org.jetbrains.idea.maven.model.MavenConstants;
|
||||||
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
|
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.MavenProject;
|
||||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||||
import org.jetbrains.idea.maven.utils.MavenLog;
|
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 MavenExplicitProfiles explicitProfiles = MavenProjectsManager.getInstance(project).getExplicitProfiles();
|
||||||
final MavenRunner mavenRunner = MavenRunner.getInstance(project);
|
final MavenRunner mavenRunner = MavenRunner.getInstance(project);
|
||||||
|
final MavenConsole console = MavenRunner.createConsole(myProject, myProject.getBasePath(), "Maven: " + task.getGoal(), env.getExecutionId());
|
||||||
|
|
||||||
targetDone.down();
|
targetDone.down();
|
||||||
new Task.Backgroundable(project, TasksBundle.message("maven.tasks.executing"), true) {
|
new Task.Backgroundable(project, TasksBundle.message("maven.tasks.executing"), true) {
|
||||||
@@ -187,7 +189,8 @@ public class MavenBeforeRunTasksProvider extends BeforeRunTaskProvider<MavenBefo
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
TasksBundle.message("maven.tasks.executing"),
|
TasksBundle.message("maven.tasks.executing"),
|
||||||
indicator);
|
indicator,
|
||||||
|
console);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
targetDone.up();
|
targetDone.up();
|
||||||
|
|||||||
Reference in New Issue
Block a user