diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form
index c00b40681466..c7953d3c98de 100644
--- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form
+++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form
@@ -1,18 +1,13 @@
diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java
index b8a7db8003c8..e5cf26e47ed8 100644
--- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java
+++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java
@@ -32,6 +32,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiMethodUtil;
import com.intellij.ui.EditorTextFieldWithBrowseButton;
import com.intellij.ui.PanelWithAnchor;
+import com.intellij.ui.components.JBCheckBox;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -50,6 +51,7 @@ public class ApplicationConfigurable extends SettingsEditor getValidModules() {
return JavaRunConfigurationModule.getModulesForClass(getProject(), MAIN_CLASS_NAME);
@@ -280,7 +289,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration {
- int classPathType = JavaParametersUtil.getClasspathType(module, myConfiguration.MAIN_CLASS_NAME, false);
+ int classPathType = JavaParametersUtil.getClasspathType(module, myConfiguration.MAIN_CLASS_NAME, false, myConfiguration.isProvidedScopeIncluded());
JavaParametersUtil.configureModule(module, params, classPathType, jreHome);
});
}
diff --git a/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java b/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java
index 86a4eb9fe7f6..04e67b3b3b1e 100644
--- a/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java
+++ b/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java
@@ -77,6 +77,12 @@ public class JavaParametersUtil {
@MagicConstant(valuesFromClass = JavaParameters.class)
public static int getClasspathType(final RunConfigurationModule configurationModule, final String mainClassName,
final boolean classMustHaveSource) throws CantRunException {
+ return getClasspathType(configurationModule, mainClassName, classMustHaveSource, false);
+ }
+
+ @MagicConstant(valuesFromClass = JavaParameters.class)
+ public static int getClasspathType(final RunConfigurationModule configurationModule, final String mainClassName,
+ final boolean classMustHaveSource, final boolean includeProvidedDependencies) throws CantRunException {
final Module module = configurationModule.getModule();
if (module == null) throw CantRunException.noModuleConfigured(configurationModule.getModuleName());
Boolean inProduction = isClassInProductionSources(mainClassName, module);
@@ -87,7 +93,9 @@ public class JavaParametersUtil {
throw CantRunException.classNotFound(mainClassName, module);
}
- return inProduction ? JavaParameters.JDK_AND_CLASSES : JavaParameters.JDK_AND_CLASSES_AND_TESTS;
+ return inProduction
+ ? (includeProvidedDependencies ? JavaParameters.JDK_AND_CLASSES_AND_PROVIDED : JavaParameters.JDK_AND_CLASSES)
+ : JavaParameters.JDK_AND_CLASSES_AND_TESTS;
}
@Nullable("null if class not found")
diff --git a/java/execution/openapi/src/com/intellij/execution/configurations/JavaParameters.java b/java/execution/openapi/src/com/intellij/execution/configurations/JavaParameters.java
index 1c36843570e1..c35ae9faaddb 100644
--- a/java/execution/openapi/src/com/intellij/execution/configurations/JavaParameters.java
+++ b/java/execution/openapi/src/com/intellij/execution/configurations/JavaParameters.java
@@ -58,9 +58,11 @@ public class JavaParameters extends SimpleJavaParameters {
public static final int JDK_ONLY = 0x1;
public static final int CLASSES_ONLY = 0x2;
public static final int TESTS_ONLY = 0x4;
+ public static final int INCLUDE_PROVIDED = 0x8;
public static final int JDK_AND_CLASSES = JDK_ONLY | CLASSES_ONLY;
public static final int JDK_AND_CLASSES_AND_TESTS = JDK_ONLY | CLASSES_ONLY | TESTS_ONLY;
public static final int CLASSES_AND_TESTS = CLASSES_ONLY | TESTS_ONLY;
+ public static final int JDK_AND_CLASSES_AND_PROVIDED = JDK_ONLY | CLASSES_ONLY | INCLUDE_PROVIDED;
public void configureByModule(final Module module,
@MagicConstant(valuesFromClass = JavaParameters.class) final int classPathType,
@@ -77,7 +79,7 @@ public class JavaParameters extends SimpleJavaParameters {
}
setDefaultCharset(module.getProject());
- configureEnumerator(OrderEnumerator.orderEntries(module).runtimeOnly().recursively(), classPathType, jdk).collectPaths(getClassPath());
+ configureEnumerator(OrderEnumerator.orderEntries(module).recursively(), classPathType, jdk).collectPaths(getClassPath());
configureJavaLibraryPath(OrderEnumerator.orderEntries(module).recursively());
}
@@ -176,6 +178,9 @@ public class JavaParameters extends SimpleJavaParameters {
}
private static OrderRootsEnumerator configureEnumerator(OrderEnumerator enumerator, int classPathType, Sdk jdk) {
+ if ((classPathType & INCLUDE_PROVIDED) == 0) {
+ enumerator = enumerator.runtimeOnly();
+ }
if ((classPathType & JDK_ONLY) == 0) {
enumerator = enumerator.withoutSdk();
}
diff --git a/java/java-tests/testSrc/com/intellij/java/execution/configurations/JavaParametersTest.java b/java/java-tests/testSrc/com/intellij/java/execution/configurations/JavaParametersTest.java
index 4592d08a062b..1ce8f2259acb 100644
--- a/java/java-tests/testSrc/com/intellij/java/execution/configurations/JavaParametersTest.java
+++ b/java/java-tests/testSrc/com/intellij/java/execution/configurations/JavaParametersTest.java
@@ -67,9 +67,11 @@ public class JavaParametersTest extends ModuleRootManagerTestCase {
public void testProvidedScope() throws Exception {
ModuleRootModificationUtil.addDependency(myModule, createJDomLibrary(), DependencyScope.PROVIDED, false);
+ ModuleRootModificationUtil.addDependency(myModule, createAsmLibrary(), DependencyScope.TEST, false);
- assertClasspath(myModule, JavaParameters.CLASSES_AND_TESTS, getJDomJar());
+ assertClasspath(myModule, JavaParameters.CLASSES_AND_TESTS, getJDomJar(), getAsmJar());
assertClasspath(myModule, JavaParameters.CLASSES_ONLY);
+ assertClasspath(myModule, JavaParameters.JDK_AND_CLASSES_AND_PROVIDED, getRtJarJdk17(), getJDomJar());
}
public void testModuleDependency() throws Exception {
diff --git a/platform/platform-resources-en/src/messages/ExecutionBundle.properties b/platform/platform-resources-en/src/messages/ExecutionBundle.properties
index 0bf20c3c74ed..92f422992657 100644
--- a/platform/platform-resources-en/src/messages/ExecutionBundle.properties
+++ b/platform/platform-resources-en/src/messages/ExecutionBundle.properties
@@ -417,3 +417,4 @@ run.dashboard.group.configurations.label=Group Name:
run.dashboard.configurable.add.configuration.type=Add Configuration Type
run.dashboard.configurable.types.panel.title=Configurations available in Run Dashboard
+application.configuration.include.provided.scope=Include dependencies with "Provided" scope