Requirements
- Oracle's JDK or OpenJDK 11 (since Nuxeo Platform 11.1) or 8 (since Nuxeo Platform 7.2)
- Apache Maven 3.3+ since Nuxeo Platform 11.1
- Apache Ant 1.7.1+
- Git
- NodeJS 4.4.2 (LTS), npm, yo, grunt-cli, gulp, bower
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
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 want a standard Nuxeo distribution:
- download it from http://www.nuxeo.com/downloads/ (manual download only)
- download it from http://maven.nuxeo.org (manually via online interface or automatically using Maven)
- you want to customize configuration files:
- you want to build your own distribution:
- rely on the same tools and principles as nuxeo-distribution does but do it from your own project, with your own assembly.
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 usagemvn 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 usageant 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.