private static void generateProjectBuild(URI workspace, File output, DevProject project)
      throws IOException {
    StringBuilder builder = new StringBuilder();

    File src = project.getExternalSrcDir();
    File res = project.getExternalResDir();
    File testSrc = project.getExternalTestSrcDir();
    File testRes = project.getExternalTestResDir();

    // @formatter:off

    // why use relatvie paths? so the eclipse hack below can work correctly.
    // add extra sourceDirs
    append(builder, "sourceSets {", NEWLINE);
    append(
        builder,
        INDENT,
        "main.java.srcDir 'src/main/start'",
        NEWLINE); // add start dir to gradle sources
    if (src != null)
      append(builder, INDENT, "main.java.srcDir '", relative(workspace, src), "'", NEWLINE);
    if (res != null)
      append(builder, INDENT, "main.resources.srcDir '", relative(workspace, res), "'", NEWLINE);
    if (testSrc != null)
      append(builder, INDENT, "test.java.srcDir '", relative(workspace, testSrc), "'", NEWLINE);
    if (testRes != null)
      append(
          builder, INDENT, "test.resources.srcDir '", relative(workspace, testRes), "'", NEWLINE);
    append(builder, "}");

    // @formatter:on

    // write
    Files.write(builder.toString(), output, Constants.CHARSET);
  }