diff --git a/plugins/gradle/plugin-resources/META-INF/plugin.xml b/plugins/gradle/plugin-resources/META-INF/plugin.xml
index f3ce7119443c..b7f17cfca939 100644
--- a/plugins/gradle/plugin-resources/META-INF/plugin.xml
+++ b/plugins/gradle/plugin-resources/META-INF/plugin.xml
@@ -117,6 +117,8 @@
+
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/GradleRunConfigurationImporter.kt b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/GradleRunConfigurationImporter.kt
new file mode 100644
index 000000000000..ffac503451e0
--- /dev/null
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/GradleRunConfigurationImporter.kt
@@ -0,0 +1,33 @@
+// Copyright 2000-2019 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.service.execution
+
+import com.intellij.execution.configurations.ConfigurationFactory
+import com.intellij.execution.configurations.RunConfiguration
+import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
+import com.intellij.openapi.externalSystem.service.project.settings.RunConfigurationImporter
+import com.intellij.openapi.project.Project
+import com.intellij.util.ObjectUtils.consumeIfCast
+
+class GradleRunConfigurationImporter: RunConfigurationImporter {
+ override fun process(project: Project,
+ runConfiguration: RunConfiguration,
+ cfg: MutableMap,
+ modelsProvider: IdeModifiableModelsProvider) {
+
+ if (runConfiguration !is GradleRunConfiguration) {
+ return
+ }
+
+ val settings = runConfiguration.settings
+
+ consumeIfCast(cfg["projectPath"], String::class.java) { settings.externalProjectPath = it }
+ consumeIfCast(cfg["taskNames"], List::class.java) { settings.taskNames = it as List }
+ consumeIfCast(cfg["envs"], Map::class.java) { settings.env = it as Map }
+ consumeIfCast(cfg["jvmArgs"], String::class.java) { settings.vmOptions = it }
+ consumeIfCast(cfg["scriptParameters"], String::class.java) { settings.scriptParameters = it }
+ }
+
+ override fun canImport(typeName: String): Boolean = "gradle" == typeName
+
+ override fun getConfigurationFactory(): ConfigurationFactory = GradleExternalTaskConfigurationType.getInstance().factory
+}
\ No newline at end of file
diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleSettingsImportingTest.java b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleSettingsImportingTest.java
index 1ef268b91cc5..cf63d3246223 100644
--- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleSettingsImportingTest.java
+++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleSettingsImportingTest.java
@@ -55,6 +55,7 @@ import org.jetbrains.plugins.gradle.settings.GradleSettings;
import org.jetbrains.plugins.gradle.settings.TestRunner;
import org.junit.After;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runners.Parameterized;
@@ -176,6 +177,43 @@ public class GradleSettingsImportingTest extends GradleImportingTestCase {
assertNull(app2Settings.get("jvmArgs"));
}
+ @Test
+ @Ignore
+ public void testGradleRunConfigurationSettingsImport() throws Exception {
+ TestRunConfigurationImporter testExtension = new TestRunConfigurationImporter("gradle");
+ maskRunImporter(testExtension);
+
+ createSettingsFile("rootProject.name = 'moduleName'");
+ importProject(
+ new GradleBuildScriptBuilderEx()
+ .withGradleIdeaExtPluginIfCan("0.5.1")
+ .addPostfix(
+ "import org.jetbrains.gradle.ext.*",
+ "idea.project.settings {",
+ " runConfigurations {",
+ " gr1(Gradle) {",
+ " project = rootProject",
+ " taskNames = [':cleanTest', ':test']",
+ " envs = ['env_key':'env_val']",
+ " jvmArgs = '-DvmKey=vmVal'",
+ " scriptParameters = '-PscriptParam'",
+ " }",
+ " }",
+ "}"
+ ).generate());
+
+
+ final Map> configs = testExtension.getConfigs();
+
+ assertContain(new ArrayList<>(configs.keySet()), "gr1");
+ Map gradleSettings = configs.get("gr1");
+
+ assertEquals(myProjectRoot.getPath(), ((String)gradleSettings.get("projectPath")).replace('\\', '/'));
+ assertTrue(((List)gradleSettings.get("taskNames")).contains(":cleanTest"));
+ assertEquals("-DvmKey=vmVal", gradleSettings.get("jvmArgs"));
+ assertTrue(((Map)gradleSettings.get("envs")).containsKey("env_key"));
+ }
+
private void maskRunImporter(@NotNull RunConfigurationImporter testExtension) {
PlatformTestUtil.maskExtensions(RunConfigurationImporter.EP_NAME, Collections.singletonList(testExtension), getTestRootDisposable());
}