# Apache™ FOP Development: Developer Tools

$Revision: 1298724 $

This page documents items that may be helpful to other developers, especially to those who are new to Apache™ FOP. Exhaustive treatment of these topics is better suited to other fora, but the information presented here is intended to deal with FOP-specific issues related to these tools, especially "gotchas", and to help developers get jump-started.

# Developer Checklist

Here is a (probably not comprehensive) list of tools you will need to be a successful FOP developer:

- A java IDE (see IDE).
- A Subversion client (see Subversion).
- Ant (see Building FOP).
- checkstyle (see Checkstyle on the conventions page).
- JUnit (see Basic Testing).

# General Developer Information

See the Apache Contributors Tech Guide for useful information and links for Apache developers, including help with tools and procedures.

# Subversion (SVN)

## General

Visit Apache XML Graphics Code Repositories for useful information.

You will need a SVN client to be able to gain access to the FOP repository. For general SVN information, visit Subversion Home. A comprehensive list of clients for all operating systems and many IDEs can be found at the Subversion Links page. For Microsoft Windows we recommend TortoiseSVN. The command-line client that comes with Subversion is also very easy to use.

## Step-by-step instruction for downloading FOP using the SVN command-line client

On the command-line (Windows or Unix), simply run:

    svn co http://svn.apache.org/repos/asf/xmlgraphics/fop/trunk/ fop-trunk

This will download the FOP trunk into the directory "fop-trunk".

## Step-by-step instructions for downloading FOP using TortoiseSVN (on Windows)

- Create a new, empty directory in a place of your choice.
- Right-click the new directory and select "SVN Checkout..." from the context menu.
- Enter `http://svn.apache.org/repos/asf/xmlgraphics/fop/trunk/` as the URL of the repository.
- Click "OK" and the download should begin.

## Creating Patches

- `cd` to a directory that contains all of the changes that you wish to include in the patch. To comprehend the entire distribution, `cd` to the top directory where you checked out the sources.
- Run: `svn up` to make sure the diff is created against the latest sources.
- Run: `svn diff >mypatch.diff`
  This will write the patch to the file "mypatch.diff".
- If you are running TortoiseSVN, you can select "Create Patch..." in the TortoiseSVN context menu.

## Documentation

- [online resource] The Subversion Home Page.
- [electronic manual] Version Control with Subversion (official Subversion manual). Note that this manual applies to the command-line version of SVN.
- [online resource] Comprehensive list of links to documentation and Subversion clients and plugins.

# Integrated Development Environments (IDEs)

An IDE is not required, but will generally be found to be helpful, especially for serious debugging and refactoring.

Borland's JBuilder 7/8 does not support Ant builds unless you have the Enterprise Edition (which is quite expensive). This causes problems with any code that is generated by the Ant build. First, you must run the Ant build before you can use the IDE. Second, when you are editing in the IDE, you must be editing the generated files, which means that you must make any changes to the source files in another editor. This is less serious for development on the trunk, but in the maintenance branch, all source files were "generated".

Sun ONE Studio Four does support Ant, but seems to use a built-in version, and as of this writing chokes on the FOP build file, saying that it is not valid. There is awkward because there is no official DTD for Ant, and it may be merely an Ant version issue.

Additional notes on setting up FOP within an IDE (ex. Eclipse) in the Wiki.