Prerequisites

Building Syncope

Before building Syncope, you need to setup an environment variable to give Maven more memory.

On Unix

export MAVEN_OPTS="-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m"

On Windows

set MAVEN_OPTS=-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m

To build Syncope simply execute (from within the top-level source directory):

$ mvn clean install

To build Syncope without running any test nor check do:

$ mvn -PskipTests,all

To build Syncope without running any test nor check, but generating Docker images, do:

$ mvn -PskipTests,all,docker

Building documentation

To build Syncope documentation execute (from within the top-level source directory):

$ mvn -N -P site clean generate-resources
The documentation artifacts are now be available under target/generated-docs/.

More build profiles

Besides default, other Maven build profiles are provided, for developer convenience.
Such profiles are limited to a specific module, hence Maven needs to be invoked from the corresponding subdirectory, not from top-level.

fit/core-reference

All integration tests

In order to keep the overall build time under acceptable time limits on average hardware, not all the available integration tests are run by default; in order to run them all, anyway, a specific build profile is provided.
$ mvn clean verify -Pfull-it,all

Other Content-Type values

By default, integration tests are run using application/json for both Accept and Content-Type HTTP headers; it is possible, however, to use application/xml or application/yaml.
$ mvn clean verify -DjaxrsContentType=application/xml
$ mvn clean verify -DjaxrsContentType=application/yaml

Debug

Starts the full environment used by integration tests (with same components available when running new project in embedded mode but console) and enables remote JPDA debugging on port 8000 in the running Java EE container (Tomcat).
$ mvn -Pdebug,all
or, without extensions
$ mvn -Pdebug

Once started in debug mode, individual test methods can be executed as follows (the Maven Surefire Plugins rules apply here):

$ mvn test -Dtest=UserITCase#list

HotSwapAgent

Similar to Debug, but with HotSwapAgent features enabled (requires DCEVM Java installed as "alternative JVM" and IDE of choice set up properly).
$ mvn -Photswap,all

DBMSes

PostgreSQL
Perform the full test suite against a real PostgreSQL database via
$ mvn -Ppostgres-it
MySQL
Perform the full test suite against a real MySQL database via
$ mvn -Pmysql-it
MariaDB
Perform the full test suite against a MariaDB database via
$ mvn -Pmariadb-it
Oracle database
After having set up the appropriate JDBC driver in your local Maven repository, perform the full test suite against a real Oracle database via
$ mvn -Poracle-it
MS SQL Server
Prform the full test suite against a real MS SQL Server database via
$ mvn -Psqlserver-it

Java EE containers

Glassfish
Perform the full test suite by deploying Syncope core in Glassfish via
$ mvn -Pglassfish-it
Payara
Perform the full test suite by deploying Syncope core in Payara via
$ mvn -Ppayara-it
Wildfly
Perform the full test suite by deploying Syncope core in Wildfly via
$ mvn -Pwildfly-it

fit/console-reference

Debug

Starts the full environment used by core's integration tests (with same components available when running new project in embedded mode, including console) and enables remote JPDA debugging on port 8000 in the running Java EE container (Tomcat).
$ mvn -Pdebug

HotSwapAgent

Similar to Debug, but with HotSwapAgent features enabled (requires DCEVM Java installed as "alternative JVM" and IDE of choice set up properly).
$ mvn -Photswap

fit/enduser-reference

Debug

Starts the full environment used by core's integration tests (with same components available when running new project in embedded mode, including console and enduser) and enables remote JPDA debugging on port 8000 in the running Java EE container (Tomcat).
$ mvn -Pdebug

Once started in debug mode, the test cases can be executed as follows:

$ cd target/enduser-test
$ nodejs/node/node nodejs/bin/protractor protractor-conf.js
where the actual tests to be run can be selected by modifying the protractor-conf.js content.

HotSwapAgent

Similar to Debug, but with HotSwapAgent features enabled (requires DCEVM Java installed as "alternative JVM" and IDE of choice set up properly).
$ mvn -Photswap

ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests

Eclipse IDE Plugin

Starts the full environment used by core's integration tests (with same components available when running new project in embedded mode, and runs the Eclipse IDE plugin tests against it. Cannot run headless.
$ mvn -Peclipse-it