Example #1
0
  // 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;
  }