mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
add support for importing Gradle Run Configurations from gradle build scripts
Fixes https://github.com/JetBrains/gradle-idea-ext-plugin/issues/74 and https://github.com/JetBrains/gradle-idea-ext-plugin/issues/47
This commit is contained in:
@@ -117,6 +117,8 @@
|
||||
|
||||
<statistics.projectUsagesCollector implementation="org.jetbrains.plugins.gradle.statistics.GradleSettingsCollector"/>
|
||||
<statistics.counterUsagesCollector groupId="build.gradle.actions" version="1"/>
|
||||
<externalSystem.runConfigurationImporter
|
||||
implementation="org.jetbrains.plugins.gradle.service.execution.GradleRunConfigurationImporter"/>
|
||||
</extensions>
|
||||
|
||||
<actions>
|
||||
|
||||
+33
@@ -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<String, Any>,
|
||||
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<String> }
|
||||
consumeIfCast(cfg["envs"], Map::class.java) { settings.env = it as Map<String, String> }
|
||||
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
|
||||
}
|
||||
+38
@@ -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<String, Map<String, Object>> configs = testExtension.getConfigs();
|
||||
|
||||
assertContain(new ArrayList<>(configs.keySet()), "gr1");
|
||||
Map<String, Object> 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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user