Nuxeo Core Developer Guide

Compiling Nuxeo From Sources

Updated: December 16, 2024

Requirements

The following may also be used to build some installers or retrieve code not yet migrated to Git:

  • Mercurial
  • DEPRECATED: Apache Subversion (aka svn)
  • DEPRECATED: IS Tools for building Windows installers
  • DEPRECATED: Wine for using IS Tools on Linux OS or Darwine on Mac OS X
  • DEPRECATED: Mono for building Windows controller (NuxeoCtl.exe).
  • PROTOTYPE: IzPack for building IzPack installer.
  • Mono xbuild for Linux OS, Mono:OSX for Mac OS X, any C# compiler for Windows
  • other required Open Source tools may be automatically downloaded by Maven when needed

Getting the Nuxeo Sources

See Getting the Nuxeo Source Code

Compiling Nuxeo

Compiling Nuxeo

mvn -DskipTests=true install -Paddons,distrib

The main Nuxeo distribution is then available in nuxeo-distribution/nuxeo-distribution-tomcat/target/nuxeo-distribution-tomcat-$VERSION-nuxeo-cap.zip.

Available Maven Profiles

Profiles usable anywhere in Nuxeo:

  • release: dedicated to the release process, it activates most of Maven plugins abilities such as strictly checking versions, building all alternatives, ...
  • nightly: dedicated to the nightly builds made by our continuous integration system, it activates the build of source artifacts.
  • javadoc: build Javadoc artifacts
  • qa: for internal use.
  • qapriv: for internal use.
  • apiviz: some reporting from org.jboss.apiviz
  • skiptests: more or less equivalent to using "-Dmaven.test.skip=true"

Profiles available at Nuxeo root:

  • addons: also build addons
  • distrib: also build distributions (nuxeo-distribution sub-module)

Building Distributions

A few default distributions are available from download. You can either customize them, or build your own distribution from sources.

The module nuxeo-distribution uses Maven and Nuxeo tools for packaging distributions. It calculates the needed artifacts based on Maven dependency trees and downloads them from our Maven repositories.

You don't need to use the nuxeo-distribution module if:

You have to use nuxeo-distribution module if:

  • you want to reproduce the Nuxeo build process,
  • you want to build Nuxeo offline,
    • Being unable to download artifacts from Internet, you will need a lot of other Nuxeo sources and some third-party artifacts.
  • you work on Nuxeo source code and need quick feedback on your changes, you don't want to wait for our continuous integration system building nuxeo-distribution

Available Maven Profiles

Profiles for use in nuxeo-distribution:

  • nuxeo-coreserver, nuxeo-cap, nuxeo-dm, nuxeo-dam, nuxeo-cmf, ...: build the corresponding application/module
  • tomcat, jboss: build the corresponding server
  • all-distributions: full build
  • itest: run integration tests
  • ftest-dm, ftest-dam, ftest-cmf, ftest-sc, ...: run functional tests against the corresponding application/module

See README file at root of nuxeo-distribution for a short description and common usage examples.

Produced Packages

  • standalone NXR packages
    • Content Application Platform (CAP)
    • Advanced Document Management (DM)
    • Digital Assets Management (DAM)
    • ...
  • Nuxeo Packages
  • Tomcat packages

Usage

There are two build ways:

  • with Maven (recommended): Maven is at the lowest level, all configuration about building a module is given in the Maven POM file. So, everything can be built using Maven but it requires some knowledge about Nuxeo and its packagings.

    Maven usage

    mvn clean install -P${PROFILE}
    
    

  • with Ant: Ant is available at the top level: Ant targets have been defined to provide user-friendly commands for building most used products but we don't cover all possibilities and Ant targets may be out of date.

    Ant usage

    ant distrib [-Ddistrib=${PROFILE}]
    
    

Here are some examples:

  • (default) All distributions:
    • mvn clean package
    • mvn clean package -Pall
  • SDK packages:
    • mvn clean package -Psdk

Starting Nuxeo

You can unzip the distribution above. If you just built it, you can use the already-expanded version at nuxeo-distribution/nuxeo-distribution-tomcat/target/nuxeo-cap-$VERSION-tomcat/:

cd nuxeo-distribution/nuxeo-distribution-tomcat/target/nuxeo-cap-*-tomcat
./bin/nuxeoctl start

See Server Start and Stop for more details.