public ExtInfoBuilder(String basedir, String outputDir, String servletContextName)
      throws Exception {

    DirectoryScanner ds = new DirectoryScanner();

    ds.setBasedir(basedir);
    ds.setExcludes(
        new String[] {
          ".svn/**",
          "**/.svn/**",
          "ext-impl/ext-impl.jar",
          "ext-impl/src/**",
          "ext-service/ext-service.jar",
          "ext-service/src/**",
          "ext-util-bridges/ext-util-bridges.jar",
          "ext-util-bridges/src/**",
          "ext-util-java/ext-util-java.jar",
          "ext-util-java/src/**",
          "ext-util-taglib/ext-util-taglib.jar",
          "ext-util-taglib/src/**",
          "liferay-plugin-package.properties"
        });

    ds.scan();

    String[] files = ds.getIncludedFiles();

    Arrays.sort(files);

    Element rootElement = new ElementImpl(DocumentHelper.createElement("ext-info"));

    Document document = new DocumentImpl(DocumentHelper.createDocument());

    document.setRootElement(rootElement);

    DocUtil.add(rootElement, "servlet-context-name", servletContextName);

    Element filesElement = rootElement.addElement("files");

    for (String file : files) {
      DocUtil.add(
          filesElement, "file", StringUtil.replace(file, StringPool.BACK_SLASH, StringPool.SLASH));
    }

    _fileUtil.write(outputDir + "/ext-" + servletContextName + ".xml", document.formattedString());
  }