// returns all .java files in the list, and returns a list where // all the .java files have been replaced by their .class files. protected List<String> compileJavas( List<String> javas, File cwd, File buildDir, String javaVersion, boolean debug, boolean verbose, boolean showDeprecation, String extraClassPath, Set<String> exclude, Set<String> noCompile) throws FakeException { List<String> arguments = new ArrayList<String>(); arguments.add("-encoding"); arguments.add("UTF8"); if (debug) arguments.add("-g"); if (buildDir != null) { buildDir.mkdirs(); arguments.add("-d"); arguments.add(buildDir.getAbsolutePath()); } if (javaVersion != null && !javaVersion.equals("")) { arguments.add("-source"); arguments.add(javaVersion); arguments.add("-target"); arguments.add(javaVersion); } if (showDeprecation) { arguments.add("-deprecation"); arguments.add("-Xlint:unchecked"); } if (extraClassPath != null && !extraClassPath.equals("")) { arguments.add("-classpath"); arguments.add(Util.pathListToNative(extraClassPath)); } String extDirs = System.getProperty("java.ext.dirs"); if (extDirs != null && !extDirs.equals("")) arguments.add("-Djava.ext.dirs=" + extDirs); int optionCount = arguments.size(); for (String path : javas) if (path.endsWith(".java") && !exclude.contains(path)) arguments.add(Util.makePath(cwd, path)); /* Do nothing if there is nothing to do ;-) */ if (optionCount == arguments.size()) return javas; String[] args = arguments.toArray(new String[arguments.size()]); if (verbose) { String output = "Compiling .java files: javac"; for (int i = 0; i < args.length; i++) output += " " + args[i]; err.println(output); } if (javac == null) javac = new JavaCompiler(err, out); try { javac.call(args, verbose); } catch (CompileError e) { throw new FakeException(e.getMessage(), e); } catch (Exception e) { e.printStackTrace(); throw new FakeException("Compile error: " + e); } List<String> result = java2classFiles(javas, cwd, buildDir, exclude, noCompile); return result; }