diff --git a/java/compiler/openapi/src/com/intellij/openapi/compiler/ex/CompilerPathsEx.java b/java/compiler/openapi/src/com/intellij/openapi/compiler/ex/CompilerPathsEx.java index d3ece4f553bd..c7a079af73d9 100644 --- a/java/compiler/openapi/src/com/intellij/openapi/compiler/ex/CompilerPathsEx.java +++ b/java/compiler/openapi/src/com/intellij/openapi/compiler/ex/CompilerPathsEx.java @@ -20,14 +20,19 @@ import com.intellij.openapi.compiler.CompilerPaths; import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.roots.CompilerModuleExtension; +import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.openapi.roots.OrderEnumerationHandler; +import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.util.ArrayUtil; +import com.intellij.util.SmartList; import com.intellij.util.StringBuilderSpinAllocator; import com.intellij.util.containers.OrderedSet; import java.io.File; import java.util.Collection; +import java.util.List; import java.util.Set; public class CompilerPathsEx extends CompilerPaths { @@ -91,6 +96,18 @@ public class CompilerPathsEx extends CompilerPaths { if (outputPathForTestsUrl != null) { outputPaths.add(VirtualFileManager.extractPath(outputPathForTestsUrl).replace('/', File.separatorChar)); } + + final ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module); + for (OrderEnumerationHandler.Factory handlerFactory : OrderEnumerationHandler.EP_NAME.getExtensions()) { + if (handlerFactory.isApplicable(module)) { + OrderEnumerationHandler handler = handlerFactory.createHandler(module); + final List outputUrls = new SmartList<>(); + handler.addCustomModuleRoots(OrderRootType.CLASSES, moduleRootManager, outputUrls, true, true); + for (String outputUrl : outputUrls) { + outputPaths.add(VirtualFileManager.extractPath(outputUrl).replace('/', File.separatorChar)); + } + } + } } return ArrayUtil.toStringArray(outputPaths); }