Fork me on GitHub

Getting Started

Many parts of Oak are still under construction, so it may be a bit difficult to find your way around the codebase. The README files, this documentation, and the Oak mailing list archives are good places to start learning about Oak.

There is also the Jackrabbit 3 wiki page, which is mostly outdated though and should only be consulted for historical research.

To get started developing Oak, build the latest sources with Maven 3 and Java 6 (or higher) like this:

mvn clean install

To enable all integration tests, including the JCR TCK, use:

mvn clean install -PintegrationTesting

Before committing changes or submitting a patch, please make sure that the above integration testing build passes without errors. If you like, you can enable integration tests by default by setting the OAK_INTEGRATION_TESTING environment variable.

MongoDB integration

Parts of the Oak build expects a MongoDB instance to be available for testing. By default a MongoDB instance running on localhost is expected, and the relevant tests are simply skipped if such an instance is not found. You can also configure the build to use custom MongoDB settings with the following properties (shown with their default values):

-Dmongo.host=127.0.0.1
-Dmongo.port=27017
-Dmongo.db=MongoMKDB
-Dmongo.db2=MongoMKDB2

Note that the configured test databases will be dropped by the test cases.

Components

The build consists of the following main components:

  • oak-parent - parent POM
  • oak-doc - Oak documentation
  • oak-commons - shared utility code
  • oak-core - Oak repository API and implementation
  • oak-jcr - JCR binding for the Oak repository
  • oak-sling - integration with Apache Sling
  • oak-solr-core - Apache Solr indexing and search
  • oak-solr-embedded - Apache Solr on an embedded Solr instance
  • oak-solr-remote - Apache Solr on an remote (HTTP) Solr instance
  • oak-http - HTTP binding for Oak
  • oak-lucene - Lucene-based query index
  • oak-run - runnable jar packaging
  • oak-segment-tar - TarMK API and implementation
  • oak-upgrade - tooling for upgrading Jackrabbit repositories to Oak
  • oak-it - integration tests
    • oak-it/osgi - integration tests for OSGi
  • oak-exercise - Oak training material

Archive

The following components have been moved to the Jackrabbit Attic:

  • oak-mk-api - MicroKernel API (deprecated, OAK-2701)
  • oak-mk - MicroKernel implementation (see OAK-2702)
  • oak-mk-remote - MicroKernel remoting (see OAK-2693)
  • oak-it/mk - integration tests for MicroKernel