Nuxeo Core Developer Guide

Getting the Nuxeo Source Code

Updated: October 22, 2018 Page Information Edit on GitHub

Getting Nuxeo Platform Source Code

Nuxeo Platform sources shall be retrieved and worked with using Git. Nuxeo core developers should have a look at Nuxeo's Git usage.

Some (mostly deprecated) code and scripts may be retrieved and worked with using Mercurial (see the documentation at SubVersion).

The following assumes you know how to work with Maven and sources in your IDE (Eclipse is used below). In particular this means that you have already configured the IDE to work with Maven (M2_REPO set in Eclipse).

Starting from version 5.9.2, Nuxeo requires Maven 3.1.1+ (3.2 recommended). Earlier releases require Maven 2.2.1.

Getting the Development Branch

Clone Nuxeo Platform repositories

git clone [email protected]:nuxeo/nuxeo.git
cd nuxeo
python clone.py master -a

  • Python 2.7 is required. The scripts are not compliant with Python 3.x versions.
  • Users of MSysGit should run clone.py with option --no_drive_mapping or -n as MSysGit is not able to access dynamically mounted drives. This option is available as of version 5.7.1.

Contributing to Nuxeo does not require cloning Nuxeo source code: see Contributing to Nuxeo

After having cloned the Nuxeo repository, you need to run a full build in Maven to download all the dependencies.

Full build Nuxeo without running tests

export MAVEN_OPTS="-Xmx4096m -Xms1024m"
mvn -DskipTests install -Paddons,distrib

You can now import the Nuxeo source code in Eclipse. See Eclipse Setup

Getting a Maintenance Branch or a Specific Release

All releases are tagged release-x.y.z and maintained on a dedicated branch x.y.z. Use the same recipe as above, but specify the wanted branch (5.4.1, 5.4.2, 5.5.0, ...) or tag (release-5.4.1, release-5.4.2, release-5.5, ...):

Get Nuxeo 5.5 release source code

python clone.py release-5.5

To see all available branches or tags, run git branch -a or git tag.

Updating Your Sources

Either call git pull -u in each repository or run:

Update sources

python clone.py

Useful Shell Functions

There are some scripts to ease working on Nuxeo Git repositories available in the scripts directory of Nuxeo. Load them from your .profile or .bashrc, for instance from Nuxeo root:

Use Nuxeo helper Shell scripts

echo ". $PWD/scripts/gitfunctions.sh" >> ~/.bashrc

Windows users will find equivalent Batch scripts in the same directory named gitf.bat.

Those scripts' main purpose is to recursively run a command on multiple repositories.

Example usage:

Git script "gitf" usage

gitf status
gitf describe --all

# Also recurse on "standard" addons (those listed in addons/pom.xml)
gitfa [some Git command]

Nuxeo Versioning Policy

Summary Sample

SCM Branch SCM Tag Version Status
master   x.y.z-SNAPSHOT development branch where is prepared next x.y.z version
5.5.0   5.5.0-HFXX-SNAPSHOT maintenance branch where bugs are fixed/backported for Nuxeo 5.5
  release-5.5 5.5 release tag for 5.5 version
5.4.2   5.4.2-HFXX-SNAPSHOT maintenance branch where bugs are fixed/backported for Nuxeo 5.4.2
  release-5.4.2 5.4.2 release tag for 5.4.2 version
fix-NXP-9999- feature-NXP-9999-   usually same as on master development branch dedicated to NXP-9999 feature or bug fix

Releases are built from tags set on their maintenance branch.

Bug fixes are usually done on a maintenance branch, forwarded to development branch and optionally back-ported to other maintenance branches. Maintenance branches are only released for development purpose; the fixes are delivered through Hotfix Nuxeo Packages.

Detailed Sample

Development is done on branch master with current version 5.6-SNAPSHOT.

Let's say we will release Nuxeo 5.6. A branch is created from master, named 5.6.0. On branch 5.6.0, version is updated from 5.6-SNAPSHOT to 5.6 (releasing version). On branch 5.6.0, code is tagged as release-5.6. If it is an important release (called "final release"), then a maintenance branch will be kept, else it would be deleted after tagging. On branch 5.6.0, version is updated to 5.6.0-HF01-SNAPSHOT (future fixes for 5.6 version). On branch master, version is updated to 5.7-SNAPSHOT (next release version). Release done.

Next development is still done on branch master, with version 5.7-SNAPSHOT.

Bugs identified on 5.6 version will be fixed on maintenance branch 5.6.0 and forward ported to the master branch. If we estimate some bug fixes are required on 5.6.x released version, we may back-port them from master branch to 5.6.x branch. Maintenance branch 5.6.0 is regularly released to deliver 5.6.0-HFxx corrective hot-fixes.

2 months ago manonlumeau NXDOC-1650 fix about integrating changes, add mention on multiple attempts
2 years ago Manon Lumeau 37
2 years ago Anahide Tchertchian 36 | remove -T 1C build option until NXP-20081 is fixed
3 years ago Julien Carsique 35
3 years ago Ronan Daniellou 34 | Typo: missing space
3 years ago Ronan Daniellou 33 | Added Maven "eclipse.workspace" option.
3 years ago Solen Guitter 32 | NXDOC-658: Marketplace packages are now called Nuxeo Packages
4 years ago Solen Guitter 31
4 years ago Solen Guitter 30
4 years ago Julien Carsique 29
5 years ago Julien Carsique 28
5 years ago Jean-Christophe Melaunay 27
5 years ago Michaël Vachette 26
5 years ago Michaël Vachette 25
5 years ago Solen Guitter 24 | Changed since 5.7 for 5.7.1
6 years ago Julien Carsique 22
6 years ago Julien Carsique 23
6 years ago Thibaud Arguillere 21
6 years ago Thibaud Arguillere 20
6 years ago Julien Carsique 19
6 years ago Jane Zupan 18
6 years ago Martin Pernollet 16
6 years ago Martin Pernollet 17 | Migrated to Confluence 4.0
6 years ago Martin Pernollet 15
7 years ago Olivier Grisel 14 | increase heapspace for maven and use -DskipTests
7 years ago Julien Carsique 13
7 years ago Anahide Tchertchian 12
7 years ago Anahide Tchertchian 11
7 years ago Anahide Tchertchian 10
7 years ago Anahide Tchertchian 9 | moving HG stuff to a sub page
7 years ago Julien Carsique 8
7 years ago Julien Carsique 7
7 years ago Julien Carsique 6
7 years ago Julien Carsique 5
7 years ago Julien Carsique 4
7 years ago Florent Guillaume 3 | -> 5.5
8 years ago Julien Carsique 2
8 years ago Stéfane Fermigier 1
History: Created by Stéfane Fermigier

We'd love to hear your thoughts!

All fields required