private void collectClasspath()

in model/src/org/jetbrains/jps/ProjectPaths.java [71:98]


  private void collectClasspath(Module module, ClasspathKind kind, Set<File> classpath, Set<Module> processed, boolean exportedOnly,
                                boolean excludeMainModuleOutput, final boolean excludeSdk, ClasspathItemFilter filter) {
    if (!processed.add(module)) {
      return;
    }

    for (ClasspathItem it : module.getClasspath(kind, exportedOnly)) {
      if (!filter.accept(module, it) || it instanceof Sdk && excludeSdk) {
        continue;
      }

      if (it instanceof ModuleSourceEntry) {
        final Module dep = ((ModuleSourceEntry) it).getModule();
        if (!excludeMainModuleOutput && kind.isTestsIncluded()) {
          classpath.add(getModuleOutputDir(dep, true));
        }
        if (!excludeMainModuleOutput || kind.isTestsIncluded()) {
          classpath.add(getModuleOutputDir(dep, false));
        }
      }
      else if (it instanceof Module) {
        collectClasspath((Module) it, kind, classpath, processed, !kind.isRuntime(), false, true, filter);
      }
      else {
        addFiles(classpath, it.getClasspathRoots(kind));
      }
    }
  }