The Apache FOP Project

The Apache™ FOP Project

Apache™ FOP: Building from Source Code

Do You Need To Build?

Apache™ FOP distributions are either pre-compiled binary or source. If you are using a binary distribution, it is already built and there is no need to build it again. See the Download Instructions for information about whether a binary or source distribution is best for your needs.

Set Up Your Environment

JDK

Building FOP 1.1 requires a minimum Java Development Kit (JDK/SDK) of 1.5 (A Java Runtime Environment is not sufficient).

CLASSPATH

There is generally no need to setup a classpath. All libraries needed to compile FOP are included in the source distribution and are referenced by the build script. You will only need to adjust the classpath if you build FOP in some other way. See the build script build.xml for details.

JAVA_HOME

The build script uses Apache Ant, a popular Java-based build tool, which usually requires that the environment variable JAVA_HOME point to your local JDK root directory. This is true even if you use JDK 1.5 or above, which normally does not need this setting.

Apache Ant

Apache Ant (Version 1.7 or later) must be installed in order to build FOP. Following best practices we don't include Ant with FOP anymore. You can find the instructions to install Ant in the Ant manual on the web.

Run the Build Script

Change to the FOP root directory and build FOP by executing the build script (build.xml) using the "ant" command.

The "ant" command is only available on your system if you've properly installed Apache Ant and added Ant's location to the PATH environment variable.

The file build.xml in the FOP root directory is the blueprint that Ant uses for the build. It contains information for numerous build targets, many of which are building blocks to more useful target, and others which are primarily used by the FOP developers. You may benefit from looking through this file to learn more about the various build targets. To obtain a complete list of useful build targets:

ant -projecthelp

The most useful targets are:

To run the build:

ant [target ...]

For example to do a normal build for the "all" target (which is the default):

ant

OR

ant all

To clean the build directory first:

ant clean all

If you want to shorten the build time you can just call the "package" target which doesn't perform any automated tests during the build.

Troubleshooting

If you have problems building FOP, please try the following: