Using Jena with Apache Maven

Apache Maven is a tool to help Java projects manage their dependencies on library code, such as Jena. By declaring a dependency on the core of Jena in your project's pom.xml file, you will get the consistent set of library files that Jena depends on automatically added too.

This page assumes you have Maven installed on your computer. If this is not the case, please read and follow these instructions.

Repositories

Released maven artifacts are mirrored to the central maven repositories. This can take a few days.

The Jena repositories at Apache are:

Stable Jena releases are automatically mirrored by the central Maven repositories, so there will normally be no need to add any extra repositories to your pom.xml or settings.xml.

Specifying Jena as a dependency

This is how to specify in your pom.xml file the dependency on a version of Jena:

  <dependency>
    <groupId>org.apache.jena</groupId>
    <artifactId>apache-jena-libs</artifactId>
    <type>pom</type>
    <version>X.Y.Z</version>
  </dependency>

This will transitively resolve all the dependencies for you: jena-core, jena-arq, jena-tdb and jena-iri and their dependencies.

Note the use of <type>pom</type> above. This does not work in all tools. An alternative is to depend on jena-tdb, which will pull in the other artifacts.

  <dependency>
    <groupId>org.apache.jena</groupId>
    <artifactId>jena-tdb</artifactId>
    <version>a.b.c</version>
  </dependency>

The version number needs to be checked - it is not the same as apache-jena.

Other modules need to be added separately, for example:

  <dependency>
    <groupId>org.apache.jena</groupId>
    <artifactId>jena-sdb</artifactId>
    <version>x.y.z</version>
  </dependency>

Please check for the latest versions.

The full list of artifacts is:

  • jena-core
  • jena-arq
  • jena-iri
  • jena-tdb
  • jena-fuseki
  • jena-text
  • jena-spatial
  • jena-jdbc-driver-bundle (See Maven artifacts for JDBC for more information)
  • jena-maven-tools
  • jena-security
  • jena-sdb
  • jena-parent
  • jena-parent

These artifacts are used to deliver Jena:

  • apache-jena - the binary distribution
  • apache-jena-libs - a POM to include main jena-... artifacts

You can run mvn dependency:tree to print the dependency tree.

Specifying dependencies on SNAPSHOTs

If you want to depend on Jena development snapshots, e.g. to get access to recent bug fixes, you should add the following to your pom.xml:

  <repository>
    <id>apache-repo-snapshots</id>
    <url>https://repository.apache.org/content/repositories/snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>

Build and install artifacts in your local Maven repository

If you want you can checkout the Jena sources, build the artifacts and install them in your local Maven repository, then you simply checkout the source tree and build with maven mvn install. This assumes you have Maven and Subversion installed:

svn co https://svn.apache.org/repos/asf/jena/trunk/ Jena
cd Jena
mvn clean install

Each of the modules can be built on it's own but they require the current snapshots and Jena parent POM to be installed.