in serverFacade/src/org/jetbrains/jps/incremental/java/EmbeddedJavac.java [46:81]
public boolean compile(Collection<String> options, final Collection<File> sources, Collection<File> classpath, Collection<File> platformClasspath, Map<File, Set<File>> outputDirToRoots, CompileContext compileContext, final DiagnosticOutputConsumer outConsumer, final OutputFileConsumer outputSink) {
final FileManagerContext context = new FileManagerContext(compileContext, outConsumer, outputSink); // todo
for (File outputDir : outputDirToRoots.keySet()) {
outputDir.mkdirs();
}
final JavacFileManager fileManager = new JavacFileManager(context);
fileManager.setOutputDirectories(outputDirToRoots);
if (!classpath.isEmpty()) {
if (!fileManager.setLocation(StandardLocation.CLASS_PATH, classpath)) {
return false;
}
}
if (!platformClasspath.isEmpty()) {
if (!fileManager.setLocation(StandardLocation.PLATFORM_CLASS_PATH, platformClasspath)) {
return false;
}
}
//todo setup file manager to support multiple outputs
final LineOutputWriter out = new LineOutputWriter() {
protected void lineAvailable(String line) {
outConsumer.outputLineAvailable(line);
}
};
try {
final JavaCompiler.CompilationTask task = myCompiler.getTask(
out, fileManager, outConsumer, filterOptionList(options), null, fileManager.toJavaFileObjects(sources)
);
return task.call();
}
finally {
context.ensurePendingTasksCompleted();
fileManager.cleanupResources();
}
}