diff --git a/platform/external-system-impl/external-system-impl.iml b/platform/external-system-impl/external-system-impl.iml
index 8cc8016672a4..c31b307dccd1 100644
--- a/platform/external-system-impl/external-system-impl.iml
+++ b/platform/external-system-impl/external-system-impl.iml
@@ -29,5 +29,6 @@
+
\ No newline at end of file
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java
index 6e63085272f5..61cdd23ddd1c 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java
@@ -47,6 +47,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.FoldRegion;
import com.intellij.openapi.editor.FoldingModel;
+import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.externalSystem.ExternalSystemManager;
import com.intellij.openapi.externalSystem.execution.ExternalSystemExecutionConsoleManager;
import com.intellij.openapi.externalSystem.model.ProjectSystemId;
@@ -125,6 +126,7 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i
if (e != null) {
mySettings = XmlSerializer.deserialize(e, ExternalSystemTaskExecutionSettings.class);
}
+ JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
}
@Override
@@ -144,6 +146,7 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i
}
}
}));
+ JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element);
}
@NotNull
@@ -156,6 +159,7 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i
public SettingsEditor getConfigurationEditor() {
SettingsEditorGroup group = new SettingsEditorGroup<>();
group.addEditor(ExecutionBundle.message("run.configuration.configuration.tab.title"), new ExternalSystemRunConfigurationEditor(getProject(), mySettings.getExternalSystemId()));
+ JavaRunConfigurationExtensionManager.getInstance().appendEditors(this, group);
group.addEditor(ExecutionBundle.message("logs.tab.title"), new LogConfigurationPanel<>());
return group;
}
@@ -234,20 +238,29 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i
if (mySettings.getTaskNames().isEmpty()) {
throw new ExecutionException(ExternalSystemBundle.message("run.error.undefined.task"));
}
- String jvmAgentSetup = null;
+
+ final JavaParameters extensionsJP = new JavaParameters();
+ final RunConfigurationExtension[] extensions = Extensions.getExtensions(RunConfigurationExtension.EP_NAME);
+ for (RunConfigurationExtension ext : extensions) {
+ ext.updateJavaParameters(myConfiguration, extensionsJP, myEnv.getRunnerSettings());
+ }
+
+ String jvmAgentSetup;
if (myDebugPort > 0) {
jvmAgentSetup = "-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=" + myDebugPort;
} else {
- ParametersList parametersList = myEnv.getUserData(ExternalSystemTaskExecutionSettings.JVM_AGENT_SETUP_KEY);
- if (parametersList != null) {
- for (String parameter : parametersList.getList()) {
- if (parameter.startsWith("-agentlib:")) continue;
- if (parameter.startsWith("-agentpath:")) continue;
- if (parameter.startsWith("-javaagent:")) continue;
- throw new ExecutionException(ExternalSystemBundle.message("run.invalid.jvm.agent.configuration", parameter));
- }
- jvmAgentSetup = parametersList.getParametersString();
+ ParametersList parametersList = extensionsJP.getVMParametersList();
+ final ParametersList data = myEnv.getUserData(ExternalSystemTaskExecutionSettings.JVM_AGENT_SETUP_KEY);
+ if (data != null) {
+ parametersList.addAll(data.getList());
}
+ for (String parameter : parametersList.getList()) {
+ if (parameter.startsWith("-agentlib:")) continue;
+ if (parameter.startsWith("-agentpath:")) continue;
+ if (parameter.startsWith("-javaagent:")) continue;
+ throw new ExecutionException(ExternalSystemBundle.message("run.invalid.jvm.agent.configuration", parameter));
+ }
+ jvmAgentSetup = parametersList.getParametersString();
}
ApplicationManager.getApplication().assertIsDispatchThread();
@@ -275,6 +288,9 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i
: AbstractExternalSystemTaskConfigurationType.generateName(
myProject, mySettings.getExternalSystemId(), mySettings.getExternalProjectPath(),
mySettings.getTaskNames(), mySettings.getExecutionName(), ": ", "");
+
+ JavaRunConfigurationExtensionManager.getInstance().attachExtensionsToProcess(myConfiguration, processHandler, myEnv.getRunnerSettings());
+
ApplicationManager.getApplication().executeOnPooledThread(() -> {
final String startDateTime = DateFormatUtil.formatTimeWithSeconds(System.currentTimeMillis());
final String greeting;
diff --git a/plugins/gradle/gradle.iml b/plugins/gradle/gradle.iml
index 5219ab2f8e56..c5cd5cc3f55b 100644
--- a/plugins/gradle/gradle.iml
+++ b/plugins/gradle/gradle.iml
@@ -82,5 +82,6 @@
+
\ No newline at end of file
diff --git a/plugins/gradle/src/META-INF/gradle-coverage-integration.xml b/plugins/gradle/src/META-INF/gradle-coverage-integration.xml
new file mode 100644
index 000000000000..d019eb562504
--- /dev/null
+++ b/plugins/gradle/src/META-INF/gradle-coverage-integration.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/gradle/src/META-INF/plugin.xml b/plugins/gradle/src/META-INF/plugin.xml
index 88d488cf9717..654cc4923ec6 100644
--- a/plugins/gradle/src/META-INF/plugin.xml
+++ b/plugins/gradle/src/META-INF/plugin.xml
@@ -40,6 +40,7 @@
com.intellij.modules.lang
org.intellij.groovy
org.jetbrains.idea.maven
+ com.intellij.modules.coverage
i18n.GradleBundle
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleCoverageExtension.kt b/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleCoverageExtension.kt
new file mode 100644
index 000000000000..b1d87e700425
--- /dev/null
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleCoverageExtension.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2000-2017 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jetbrains.plugins.gradle.execution.test.runner
+
+import com.intellij.coverage.JavaCoverageEngineExtension
+import com.intellij.execution.configurations.RunConfigurationBase
+import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunConfiguration
+import org.jetbrains.plugins.gradle.util.GradleConstants
+
+/**
+ * Created by Nikita.Skvortsov
+ * date: 23.08.2017.
+ */
+
+class GradleCoverageExtension: JavaCoverageEngineExtension() {
+ override fun isApplicableTo(conf: RunConfigurationBase?): Boolean =
+ conf is ExternalSystemRunConfiguration && GradleConstants.SYSTEM_ID == conf.settings.externalSystemId
+}
\ No newline at end of file