diff --git a/java/java-tests/testSrc/com/intellij/roots/OrderEnumeratorTest.java b/java/java-tests/testSrc/com/intellij/roots/OrderEnumeratorTest.java index 493ff0002370..7d54a4860521 100644 --- a/java/java-tests/testSrc/com/intellij/roots/OrderEnumeratorTest.java +++ b/java/java-tests/testSrc/com/intellij/roots/OrderEnumeratorTest.java @@ -85,6 +85,8 @@ public class OrderEnumeratorTest extends ModuleRootManagerTestCase { getJDomJar()); assertClassRoots(orderEntries(myModule).withoutSdk().withoutDepModules().withoutModuleSourceEntries()); assertEnumeratorRoots(orderEntries(myModule).productionOnly().withoutModuleSourceEntries().withoutSdk().withoutDepModules().classes()); + + assertOrderedEquals(orderEntries(myModule).getAllLibrariesAndSdkClassesRoots(), getRtJarJdk17(), getJDomJar()); } public void testModuleDependencyScope() throws Exception { diff --git a/platform/projectModel-api/src/com/intellij/openapi/roots/OrderEnumerator.java b/platform/projectModel-api/src/com/intellij/openapi/roots/OrderEnumerator.java index 60d8b59c9948..c77efa1f9fc7 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/roots/OrderEnumerator.java +++ b/platform/projectModel-api/src/com/intellij/openapi/roots/OrderEnumerator.java @@ -25,8 +25,6 @@ import com.intellij.util.PathsList; import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; -import java.util.Collection; - /** * Interface for convenient processing dependencies of a module or a project. Allows to process {@link OrderEntry}s and collect classes * and source roots.

@@ -82,7 +80,7 @@ public abstract class OrderEnumerator { } public VirtualFile[] getAllLibrariesAndSdkClassesRoots() { - return withoutModuleSourceEntries().recursively().exportedOnly().classes().usingCache().getRoots(); + return withoutModuleSourceEntries().withoutDepModules().recursively().exportedOnly().classes().usingCache().getRoots(); } public VirtualFile[] getAllSourceRoots() { diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/execution/MavenClasspathsAndSearchScopesTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/execution/MavenClasspathsAndSearchScopesTest.java index 75b6e83fc386..974afc85a436 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/execution/MavenClasspathsAndSearchScopesTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/execution/MavenClasspathsAndSearchScopesTest.java @@ -21,11 +21,9 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.impl.scopes.LibraryRuntimeClasspathScope; import com.intellij.openapi.module.impl.scopes.ModuleWithDependenciesScope; -import com.intellij.openapi.roots.CompilerModuleExtension; -import com.intellij.openapi.roots.ModuleRootModificationUtil; -import com.intellij.openapi.roots.OrderEnumerator; -import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.impl.LibraryScopeCache; +import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.LocalFileSystem; @@ -34,6 +32,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.testFramework.PsiTestUtil; +import com.intellij.util.ArrayUtil; import com.intellij.util.PathsList; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.MavenImportingTestCase; @@ -158,6 +157,44 @@ public class MavenClasspathsAndSearchScopesTest extends MavenImportingTestCase { getProjectPath() + "/m4/target/classes"); } + public void testDoNotIncludeTargetDirectoriesOfModuleDependenciesToLibraryClassesRoots() throws Exception { + VirtualFile m = createModulePom("m", "test" + + "m" + + "1" + + "" + + " " + + " test" + + " dep" + + " 1" + + " " + + ""); + + VirtualFile dep = createModulePom("dep", "test" + + "dep" + + "1" + + "" + + " " + + " junit" + + " junit" + + " 4.0" + + " " + + ""); + + importProjects(m, dep); + assertModules("m", "dep"); + + assertModuleModuleDeps("m", "dep"); + + setupJdkForModules("m", "dep"); + + createOutputDirectories(); + Module module = getModule("m"); + VirtualFile[] jdkRoots = ModuleRootManager.getInstance(module).getSdk().getRootProvider().getFiles(OrderRootType.CLASSES); + VirtualFile[] junitRoots = LibraryTablesRegistrar.getInstance().getLibraryTable(myProject).getLibraryByName("Maven: junit:junit:4.0") + .getFiles(OrderRootType.CLASSES); + assertOrderedEquals(OrderEnumerator.orderEntries(module).getAllLibrariesAndSdkClassesRoots(), ArrayUtil.mergeArrays(jdkRoots, junitRoots)); + } + public void testDoNotIncludeTestClassesWhenConfiguringModuleDependenciesForProductionCode() throws Exception { VirtualFile m1 = createModulePom("m1", "test" + "m1" +