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, checkout the sources from svn, or fork them on GitHub. Then build the latest sources with Maven 3 and Java 8 (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.
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.
The build consists of the following components:
oak-parent - parent POM
oak-doc - Oak documentation
oak-commons - shared utility code
oak-api - Oak repository API
oak-core - Oak repository implementation
oak-core-spi - Oak repository extensions
oak-jcr - JCR binding for the Oak repository
oak-solr-core - Apache Solr indexing and search
oak-solr-osgi
oak-lucene - Lucene-based query index
oak-auth-external - External authentication support
oak-auth-ldap - LDAP implementation of external authentication
oak-authorization-cug - Authorization model for closed user groups (CUG)
oak-blob - Oak Blob Store API
oak-blob-plugins - Oak Blob : Extensions and Base Implementations
oak-blob-cloud - S3 cloud blob store implementation
oak-blob-cloud-azure - Azure cloud blob store implementation
oak-store-spi - Oak NodeStore and Commit SPI
oak-segment-tar - TarMK API and nodestore implementation
oak-store-document - Oak DocumentNodeStore implementation on MongoDB and RDB
oak-store-composite - CompositeNodeStore implementation
oak-upgrade - tooling for upgrading Jackrabbit repositories to Oak and sidegrading Oak to Oak
oak-run - runnable jar packaging
oak-run-commons - utilities shared by oak-run and oak-benchmarks
oak-benchmarks - benchmark tests
oak-it - integration tests
oak-it-osgi - integration tests for OSGi
oak-http - HTTP binding for Oak
oak-pojosr
oak-exercise - Oak training material
oak-examples - Oak examples (webapp and standalone)
The following components have been moved to the Jackrabbit Attic: