ModeShape is a distributed, hierarchical, transactional, and consistent data store with support for queries, full-text search, events, versioning, references, and flexible and dynamic schemas. It is very fast, highly available, extremely scalable, and it is 100% open source and written in Java. Clients use the JSR-283 standard Java API for conte…
Switch branches/tags
modeshape-5.4.1.Final modeshape-5.4.0.Final modeshape-5.3.0.Final modeshape-5.2.0.Final modeshape-5.1.0.Final modeshape-5.0.0.Final modeshape-4.6.2.Final modeshape-4.6.1.Final modeshape-4.6.0.Final modeshape-4.5.0.Final modeshape-4.4.0.Final modeshape-4.3.0.Final modeshape-4.2.0.Final modeshape-4.1.0.Final modeshape-4.0.0.Final modeshape-4.0.0.Beta2 modeshape-4.0.0.Beta1 modeshape-4.0.0.Alpha4 modeshape-4.0.0.Alpha3 modeshape-4.0.0.Alpha2 modeshape-4.0.0.Alpha1 modeshape-3.8.1.Final modeshape-3.8.0.Final modeshape-3.7.4.Final modeshape-3.7.3.Final modeshape-3.7.2.Final modeshape-3.7.1.Final modeshape-3.7.0.Final modeshape-3.6.1.Final modeshape-3.6.0.Final modeshape-3.5.0.Final modeshape-3.4.0.Final modeshape-3.3.0.Final modeshape-3.2.0.Final modeshape-3.1.3.Final modeshape-3.1.2.Final modeshape-3.1.1.Final modeshape-3.1.0.Final modeshape-3.0.1.Final modeshape-3.0.0.Final modeshape-3.0.0.CR3 modeshape-3.0.0.CR2 modeshape-3.0.0.CR1 modeshape-3.0.0.Beta4 modeshape-3.0.0.Beta3 modeshape-3.0.0.Beta2 modeshape-3.0.0.Beta1 modeshape-3.0.0.Alpha6 modeshape-3.0.0.Alpha5 modeshape-3.0.0.Alpha4 modeshape-3.0.0.Alpha3 modeshape-3.0.0.Alpha2 modeshape-3.0.0.Alpha1 modeshape-2.8.3.Final modeshape-2.8.2.Final modeshape-2.8.1.GA modeshape-2.8.1.Final modeshape-2.8.0.Final modeshape-2.7.0.Final modeshape-2.6.0.Final modeshape-2.6.0.Beta2 modeshape-2.6.0.Beta1 modeshape-2.5.0.Final modeshape-2.5.0.Beta2 modeshape-2.5.0.Beta1 modeshape-2.4.0.Final modeshape-2.3.0.Final modeshape-2.2.0.Final modeshape-2.1.0.Final modeshape-2.0.0.Final modeshape-1.2.0.Final modeshape-1.1.0.Final modeshape-1.0.0.Final modeshape-1.0.0.Beta1 dna-0.7 dna-0.6 dna-0.5 dna-0.4 dna-0.3 dna-0.2 dna-0.1 EDS_5.3.1_2_2014 3.8.x-prod-ip6.1-ER1
Nothing to show
Clone or download
blafond Merge pull request #1679 from mbenson/pr1662
Use latest 2.x elasticsearch version 2.4.5
Latest commit 15d928c Nov 16, 2018
Failed to load latest commit information.
bin Updates the release notes for 5.4.1.Final. Apr 18, 2017
boms Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
checkstyle Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
connectors Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
deploy Support using profile-based credentials for S3 binary storage Apr 28, 2017
extractors MODE-2684 Removes the compile time dependency of modeshape-core towar… Apr 17, 2017
index-providers Use latest 2.x elasticsearch version 2.4.5 Nov 14, 2018
integration include all assembled dependencies; ignore version numbers to make up… Nov 16, 2018
modeshape-assembly-descriptors Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-client Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-common Remove unused import Jun 20, 2017
modeshape-distribution Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-jca-rar Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-jca Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-jcr-api Merge pull request #1674 from mbenson/MODE-2732 Nov 9, 2018
modeshape-jcr Merge pull request #1678 from mbenson/JcrRepositoryStartupTest-timeouts Nov 9, 2018
modeshape-jdbc-local Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-jdbc Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-parent additional modifications to properly execute JBoss AS integration tests Nov 16, 2018
modeshape-performance-tests Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-persistence-tests Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-schematic Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
modeshape-unit-test Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017
persistence MODE-2728 Fixes transaction leak in FileDb May 7, 2018
sequencers MODE-2730 account for line ending differences to pass tests on Windows Nov 14, 2018
web Change visibilty Aug 25, 2017
.gitattributes MODE-2730 account for line ending differences to pass tests on Windows Nov 14, 2018
.gitignore MODE-2528 Integrates the new relational provider with the modeshape c… Feb 12, 2016
.travis.yml Fixes JVM params for Travis build Aug 17, 2017
LICENSE.txt MODE-2081 Changed the license for ModeShape code to ASL 2.0. Jan 13, 2014 Updates the Travis build status link Jun 17, 2016
eclipse-code-formatter-profile.xml DNA-580 Rebranded all of the codebase, changing from 'JBoss DNA' to '… Jan 14, 2010
eclipse-preferences.epf MODE-664 Upgraded Mockito to 1.8.1, which included changing several d… Feb 24, 2010
pom.xml Changed the POMs to 5.5-SNAPSHOT Mar 31, 2017 Updates the release notes for 5.4.1.Final. Apr 18, 2017
settings.xml MODE-2613: Modeshape persistence test module Aug 23, 2016

License Maven Central Build Status

Copyright 2008-2016 ModeShape Project. Licensed under the Apache License, Version 2.0.

The ModeShape project

This is the official Git repository for the ModeShape project.

ModeShape is an open source implementation of the JCR 2.0 (JSR-283) specification and standard API. To your applications, ModeShape looks and behaves like a regular JCR repository. Applications can search, query, navigate, change, version, listen for changes, etc. But ModeShape can store that content in a variety of back-end stores (including relational databases, the filesystem, etc.), or it can access and update existing content from other kinds of systems (including file systems, Git repositories, JDBC database metadata, and other JCR repositories which support CMIS). ModeShape's connector architecture means that you can write custom connectors to access any kind of system. And ModeShape can even federate multiple back-end systems into a single, unified virtual repository.

ModeShape repositories can be used in a variety of applications. One of the most obvious ones is in provisioning and management, where it's critical to understand and keep track of the metadata for models, database, services, components, applications, clusters, machines, and other systems used in an enterprise. Governance takes that a step farther, by also tracking the policies and expectations against which performance can be verified. In these cases, a repository is an excellent mechanism for managing this complex and highly-varied information. But a ModeShape repository doesn't have to be large and complex: it could just manage configuration information for an application, or it could just provide a JCR interface on top of a couple of non-JCR systems.

For more information on ModeShape, including getting started guides, reference guides, and downloadable binaries, visit the project's website at or follow us on our blog or on Twitter. Or hop into our IRC chat room and talk our community of contributors and users.

Get the code

The easiest way to get started with the code is to create your own fork of this repository, and then clone your fork:

$ git clone<you>/modeshape.git
$ cd modeshape
$ git remote add upstream git://

At any time, you can pull changes from the upstream and merge them onto your master:

$ git checkout master               # switches to the 'master' branch
$ git pull upstream master          # fetches all 'upstream' changes and merges 'upstream/master' onto your 'master' branch
$ git push origin                   # pushes all the updates to your fork, which should be in-sync with 'upstream'

The general idea is to keep your 'master' branch in-sync with the 'upstream/master'.

Building ModeShape

Then, we use Maven 3.x to build our software. The following command compiles all the code, installs the JARs into your local Maven repository, and run all of the unit tests:

$ mvn clean install -s settings.xml

BTW, that '-s settings.xml' argument uses the 'settings.xml' file in our codebase, which is set up to use the JBoss Maven repository

If you are interested in building & contributing to the Wildfly kit as well, you need to run the following command (instead of the earlier command) to build all modules, including the Wildfly kit, using our "integration" profile:

$ mvn clean install -s settings.xml -Pintegration

To build everything, including the ModeShape kit for Wildfly, our JavaDoc, and our other assemblies, use the "assembly" profile instead:

$ mvn clean install -s settings.xml -Passembly

As an alternative to always passing the "-s settings.xml" parameter, you can modify your local ~/.m2/settings.xml file and add the above mentioned repositories, making sure they are active by default during a build.

That command takes a while -- we do have over 12K unit tests. So if need be, your builds can skip the tests:

$ mvn clean install -s settings.xml -DskipTests

If you have any trouble building (or don't like the '-s settings.xml' usage), check the detailed build instructions and tips.

Contribute fixes and features

ModeShape is licensed under the Apache License 2.0 (see the file LICENSE.txt or for details).

Contributions to ModeShape are welcome. They must be completely authored by you, and you must have the right to contribute them (for example, if you are employed, you must have received the necessary permissions from your employer to make the contribution). All contributions to ModeShape must be licensed under the Apache License 2.0, just like the project itself.

Before committing anything, PLEASE make sure you have set up all of the development tools (see, are following the project's guidelines (see, and are using our accepted workflow (see

If you want to fix a bug or make any changes, please log an issue in the ModeShape JIRA describing the bug or new feature. Then we highly recommend making the changes on a topic branch named with the JIRA issue number. For example, this command creates a branch for the MODE-1234 issue:

$ git checkout -b mode-1234

After you're happy with your changes and a full build (with unit tests) runs successfully, commit your changes on your topic branch (using really good comments). Then it's time to check for and pull any recent changes that were made in the official repository:

$ git checkout master               # switches to the 'master' branch
$ git pull upstream master          # fetches all 'upstream' changes and merges 'upstream/master' onto your 'master' branch
$ git checkout mode-1234            # switches to your topic branch
$ git rebase master                 # reapplies your changes on top of the latest in master
                                      (i.e., the latest from master will be the new base for your changes)

If the pull grabbed a lot of changes, you should rerun your build to make sure your changes are still good. You can then either create patches (one file per commit, saved in ~/mode-1234) with

$ git format-patch -M -o ~/mode-1234 orgin/master

and upload them to the JIRA issue, or you can push your topic branch and its changes into your public fork repository

$ git push origin mode-1234         # pushes your topic branch into your public fork of ModeShape

and generate a pull-request for your changes.

We prefer pull-requests, because we can review the proposed changes, comment on them, discuss them with you, and likely merge the changes right into the official repository.