Contributor guide

Prerequisites

  • git

  • GraalVM with native-image command installed and GRAALVM_HOME environment variable set, see Building a native executable section of the Quarkus documentation.

  • If you are on Linux, docker or podman is sufficient for the native mode too. Use -Pnative,docker instead of -Pnative if you choose this option.

  • Java 17 or higher (Java 11 is only for Camel Quarkus < 3.0.0).

  • Maven 3.8.2+ (unless you use the Maven Wrapper, a.k.a. mvnw available in the source tree).

How to build

Checkout the code

git clone https://github.com/apache/camel-quarkus.git
cd camel-quarkus

A fast build without tests and various checks:

mvn clean install -Dquickly

A build with integration tests in the JVM mode only:

mvn clean install

A build with integration tests in both the JVM mode and the native mode:

mvn clean install -Pnative
You may want to install and use mvnd - the Maven Daemon for faster builds. When using mvnd on MacOS, make sure the mvnd version matches your installed Maven version (mvn) to avoid compilation failures due to missing dependencies.
For building native images on MacOS, you usually do not need to use -Dquarkus.native.container-build. This option is primarily intended for Linux systems, where the native image build runs inside a Docker container. On MacOS, GraalVM can typically generate the native image directly, so omitting this option simplifies the build and avoids unnecessary errors.
Extensions that depend on Java AWT are not yet supported for native image generation on MacOS. If an integration test fails when running mvnd clean install -Dnative due to missing AWT support, this is expected and not necessarily a problem with your environment. Running the same test in JVM mode (mvn clean install) should work correctly.
To run a specific integration test, you can use the -Dtest property. For example: mvn clean test -Dtest=MyTest. To run tests in a specific module, use the -pl (project list) flag: mvn clean test -pl integration-tests/my-module.