diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/run/BuildArtifactsBeforeRunTaskProvider.java b/java/compiler/impl/src/com/intellij/packaging/impl/run/BuildArtifactsBeforeRunTaskProvider.java index c7bab6b06867..bfd25ce8f0b0 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/run/BuildArtifactsBeforeRunTaskProvider.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/run/BuildArtifactsBeforeRunTaskProvider.java @@ -228,6 +228,14 @@ public class BuildArtifactsBeforeRunTaskProvider extends BeforeRunTaskProvider buildArtifactsTasks = runManager.getBeforeRunTasks(configuration, ID); + if (buildArtifactsTasks.isEmpty()) { //Add new task if absent + BuildArtifactsBeforeRunTask task = new BuildArtifactsBeforeRunTask(project); + buildArtifactsTasks.add(task); + List tasks = runManager.getBeforeRunTasks(configuration); + tasks.add(task); + runManager.setBeforeRunTasks(configuration, tasks, false); + } + for (BuildArtifactsBeforeRunTask task : buildArtifactsTasks) { task.setEnabled(true); task.addArtifact(artifact); diff --git a/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java b/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java index 13a16c6fd8f2..d1ffbf31d23d 100644 --- a/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java +++ b/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java @@ -65,6 +65,8 @@ public abstract class RunManagerEx extends RunManager { @NotNull public abstract List getBeforeRunTasks(RunConfiguration settings); + public abstract void setBeforeRunTasks(RunConfiguration runConfiguration, List tasks, boolean addEnabledTemplateTasksIfAbsent); + @NotNull public abstract List getBeforeRunTasks(RunConfiguration settings, Key taskProviderID); diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java index cc09148e22af..2b9637df0b3e 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java @@ -256,7 +256,6 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable, checkRecentsLimit(); mySharedConfigurations.put(newId, shared); - getTemplateBeforeRunTask(configuration); setBeforeRunTasks(configuration, tasks, addEnabledTemplateTasksIfAbsent); if (existingSettings == settings) { @@ -830,10 +829,10 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable, if (tasks != null) { return getCopies(tasks); } - return getTemplateBeforeRunTask(settings); + return getTemplateBeforeRunTasks(settings); } - private List getTemplateBeforeRunTask(RunConfiguration settings) { + private List getTemplateBeforeRunTasks(RunConfiguration settings) { final RunnerAndConfigurationSettings template = getConfigurationTemplate(settings.getFactory()); final List templateTasks = myConfigurationToBeforeTasksMap.get(template.getConfiguration()); if (templateTasks != null) { @@ -879,7 +878,7 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable, public final void setBeforeRunTasks(final RunConfiguration runConfiguration, @NotNull List tasks, boolean addEnabledTemplateTasksIfAbsent) { List result = new ArrayList(tasks); if (addEnabledTemplateTasksIfAbsent) { - List templates = getTemplateBeforeRunTask(runConfiguration); + List templates = getTemplateBeforeRunTasks(runConfiguration); Set> idsToSet = new HashSet>(); for (BeforeRunTask task : tasks) { idsToSet.add(task.getProviderId()); @@ -902,7 +901,7 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable, } public void addConfiguration(final RunnerAndConfigurationSettings settings, final boolean isShared) { - addConfiguration(settings, isShared, new ArrayList(), false); + addConfiguration(settings, isShared, getTemplateBeforeRunTasks(settings.getConfiguration()), false); } public static RunManagerImpl getInstanceImpl(final Project project) { diff --git a/platform/testFramework/src/com/intellij/mock/MockRunManager.java b/platform/testFramework/src/com/intellij/mock/MockRunManager.java index 8cb22fd675be..481ef662723b 100644 --- a/platform/testFramework/src/com/intellij/mock/MockRunManager.java +++ b/platform/testFramework/src/com/intellij/mock/MockRunManager.java @@ -129,6 +129,10 @@ public class MockRunManager extends RunManagerEx { return Collections.emptyList(); } + @Override + public void setBeforeRunTasks(RunConfiguration runConfiguration, List tasks, boolean addEnabledTemplateTasksIfAbsent) { + } + @Override public RunnerAndConfigurationSettings findConfigurationByName(@NotNull String name) { return null;