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));
}
}
}