The Apache FOP Project

The Apache™ FOP Project

Apache™ FOP: Building from Source Code

Do You Need To Build?

Apache™ FOP snapshots are either pre-compiled binary or source. If you are using a binary snapshot, it is already built and there is no need to build it again. If you got the source code from a repository snapshot or via Git you will need to build FOP. See the Download Instructions for information about where to obtain binary or repository snapshots, and whether a binary or source snapshot is best for your needs.

Set Up Your Environment


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


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 pom.xml for details.


The build script uses Apache Maven, 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 Maven

Apache Maven (Version 3.6 or later) must be installed in order to build FOP. You can find the instructions to install Maven in the Maven manual on the web.

Run the Build Script

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

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

The file pom.xml in the FOP root directory is the blueprint that Maven uses for the build.

The most useful targets are:

To run the build:

mvn [target ...]

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

mvn clean install -DskipTests

If you want to shorten the build time you can just add the "-DskipTests" argument which doesn't perform any automated tests during the build.


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