Gradle debug anything (IDEA-196883)

This commit is contained in:
Vladislav.Soroka
2018-08-09 16:36:56 +03:00
parent a5f46baa44
commit 89c1e45119
2 changed files with 16 additions and 6 deletions
@@ -15,6 +15,7 @@
*/
package org.jetbrains.plugins.gradle.action;
import com.intellij.execution.Executor;
import com.intellij.execution.RunManager;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.executors.DefaultRunExecutor;
@@ -43,6 +44,7 @@ import org.gradle.cli.CommandLineArgumentException;
import org.gradle.cli.CommandLineParser;
import org.gradle.cli.ParsedCommandLine;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.gradle.service.execution.cmd.GradleCommandLineOptionsConverter;
import org.jetbrains.plugins.gradle.service.task.ExecuteGradleTaskHistoryService;
import org.jetbrains.plugins.gradle.service.task.GradleRunTaskDialog;
@@ -111,13 +113,16 @@ public class GradleExecuteTaskAction extends ExternalSystemAction {
historyService.addCommand(fullCommandLine, workDirectory);
runGradle(project, workDirectory, fullCommandLine);
runGradle(project, null, workDirectory, fullCommandLine);
}
public static void runGradle(@NotNull Project project, @NotNull String workDirectory, @NotNull String fullCommandLine) {
public static void runGradle(@NotNull Project project,
@Nullable Executor executor,
@NotNull String workDirectory,
@NotNull String fullCommandLine) {
final ExternalTaskExecutionInfo taskExecutionInfo;
try {
taskExecutionInfo = buildTaskInfo(workDirectory, fullCommandLine);
taskExecutionInfo = buildTaskInfo(workDirectory, fullCommandLine, executor);
}
catch (CommandLineArgumentException ex) {
final NotificationData notificationData = new NotificationData(
@@ -147,7 +152,9 @@ public class GradleExecuteTaskAction extends ExternalSystemAction {
}
}
private static ExternalTaskExecutionInfo buildTaskInfo(@NotNull String projectPath, @NotNull String fullCommandLine)
private static ExternalTaskExecutionInfo buildTaskInfo(@NotNull String projectPath,
@NotNull String fullCommandLine,
@Nullable Executor executor)
throws CommandLineArgumentException {
CommandLineParser gradleCmdParser = new CommandLineParser();
@@ -180,7 +187,7 @@ public class GradleExecuteTaskAction extends ExternalSystemAction {
settings.setScriptParameters(scriptParameters);
settings.setVmOptions(vmOptions);
settings.setExternalSystemIdString(GradleConstants.SYSTEM_ID.toString());
return new ExternalTaskExecutionInfo(settings, DefaultRunExecutor.EXECUTOR_ID);
return new ExternalTaskExecutionInfo(settings, executor == null ? DefaultRunExecutor.EXECUTOR_ID : executor.getId());
}
private static String obtainAppropriateWorkingDirectory(AnActionEvent e) {
@@ -1,6 +1,7 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.plugins.gradle.execution;
import com.intellij.execution.Executor;
import com.intellij.ide.actions.runAnything.activity.RunAnythingProviderBase;
import com.intellij.ide.actions.runAnything.items.RunAnythingItem;
import com.intellij.openapi.actionSystem.DataContext;
@@ -33,6 +34,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import static com.intellij.ide.actions.runAnything.RunAnythingAction.EXECUTOR_KEY;
import static com.intellij.ide.actions.runAnything.RunAnythingUtil.fetchProject;
import static com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.getChildren;
@@ -101,8 +103,9 @@ public class GradleRunAnythingProvider extends RunAnythingProviderBase<String> {
public void execute(@NotNull DataContext dataContext, @NotNull String value) {
Project project = fetchProject(dataContext);
String commandLine = StringUtil.trimStart(value, getHelpCommand());
Executor executor = EXECUTOR_KEY.getData(dataContext);
for (GradleProjectSettings setting : GradleSettings.getInstance(project).getLinkedProjectsSettings()) {
GradleExecuteTaskAction.runGradle(project, setting.getExternalProjectPath(), commandLine);
GradleExecuteTaskAction.runGradle(project, executor, setting.getExternalProjectPath(), commandLine);
}
}