private void createFileSyncConfig(MavenProject prj) throws Exception {
    File configFile = new File(prj.getBasedir(), FILE_SYNC_CONFIG_FILE);
    getLog().info("[WarSync] Create FileSync Config: " + configFile.getAbsolutePath());
    URI BaseURI = prj.getBasedir().toURI();
    configFile.getParentFile().mkdirs();
    String filterFile = projectFilters.get(getProjectReferenceId(prj.getArtifact()));
    if (filterFile == null && !prj.getFilters().isEmpty()) {
      filterFile = (String) prj.getFilters().get(0);
      if (filterFile != null) {
        filterFile = BaseURI.relativize(new File(filterFile).toURI()).getPath();
      }
    }
    PrintWriter writer = null;
    try {
      int index = 0;
      writer = new PrintWriter(configFile);
      writer.println("defaultDestination=" + FileSyncMap.formatPath(warDir.getAbsolutePath()));
      writer.println("eclipse.preferences.version=1");
      writer.println("includeTeamPrivateFiles=false");
      writer.println("useCurrentDateForDestinationFiles=false");
      if (prj == project) {
        FileSyncMap webRootMap = new FileSyncMap(index++);
        webRootMap.setSourceFolder(BaseURI.relativize(warSrcDir.toURI()).getPath());
        webRootMap.setExcludePatterns("WEB-INF/");
        writer.println(webRootMap.render());

        FileSyncMap webInfoMap = new FileSyncMap(index++);
        webInfoMap.setSourceFolder(
            BaseURI.relativize(new File(warSrcDir, "WEB-INF").toURI()).getPath());
        webInfoMap.setDestFolder(new File(warDir, "WEB-INF").getAbsolutePath());
        webInfoMap.setFilterFile(filterFile);
        writer.println(webInfoMap.render());
      }

      FileSyncMap classMap = new FileSyncMap(index++);
      classMap.setSourceFolder(
          BaseURI.relativize(new File(prj.getBuild().getOutputDirectory()).toURI()).getPath());
      classMap.setDestFolder(new File(warDir, "WEB-INF/classes").getAbsolutePath());
      classMap.setFilterFile(filterFile);
      writer.println(classMap.render());
    } finally {
      if (writer != null) {
        writer.flush();
        writer.close();
      }
    }
  }