correctly determine target roots (honoring excludes, test/production properties, etc)

This commit is contained in:
Eugene Zhuravlev
2013-06-18 10:24:10 +04:00
parent 5f6d1ec801
commit 08c87665bc
@@ -50,13 +50,13 @@ import org.jetbrains.jps.incremental.messages.ProgressMessage;
import org.jetbrains.jps.javac.*;
import org.jetbrains.jps.model.JpsDummyElement;
import org.jetbrains.jps.model.JpsProject;
import org.jetbrains.jps.model.JpsSimpleElement;
import org.jetbrains.jps.model.java.*;
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
import org.jetbrains.jps.model.java.JpsJavaSdkType;
import org.jetbrains.jps.model.java.LanguageLevel;
import org.jetbrains.jps.model.java.compiler.*;
import org.jetbrains.jps.model.library.sdk.JpsSdk;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleType;
import org.jetbrains.jps.model.module.JpsTypedModuleSourceRoot;
import org.jetbrains.jps.service.JpsServiceManager;
import org.jetbrains.jps.util.JpsPathUtil;
@@ -249,16 +249,16 @@ public class JavaBuilder extends ModuleLevelBuilder {
final Set<File> srcPath = new HashSet<File>();
Set<File> tempRoots = null;
collectSourceRoots(chunk, srcPath, chunk.containsTests()? JavaSourceRootType.TEST_SOURCE : JavaSourceRootType.SOURCE);
final BuildRootIndex index = pd.getBuildRootIndex();
for (ModuleBuildTarget target : chunk.getTargets()) {
for (JavaSourceRootDescriptor rd : index.getTempTargetRoots(target, context)) {
if (tempRoots == null) {
tempRoots = new THashSet<File>(FileUtil.FILE_HASHING_STRATEGY);
}
for (JavaSourceRootDescriptor rd : index.getTargetRoots(target, context)) {
srcPath.add(rd.root);
tempRoots.add(rd.root);
if (rd.isTemp) {
if (tempRoots == null) {
tempRoots = new THashSet<File>(FileUtil.FILE_HASHING_STRATEGY);
}
tempRoots.add(rd.root);
}
}
}
final DiagnosticSink diagnosticSink = new DiagnosticSink(context, tempRoots == null? Collections.<File>emptySet() : tempRoots);
@@ -317,14 +317,6 @@ public class JavaBuilder extends ModuleLevelBuilder {
return exitCode;
}
private static void collectSourceRoots(ModuleChunk chunk, Set<File> srcPath, final JavaSourceRootType rootType) {
for (JpsModule module : chunk.getModules()) {
for (JpsTypedModuleSourceRoot<JpsSimpleElement<JavaSourceRootProperties>> root : module.getSourceRoots(rootType)) {
srcPath.add(JpsPathUtil.urlToFile(root.getUrl()));
}
}
}
private boolean compileJava(
final CompileContext context,
ModuleChunk chunk,