...
- Download and install Maven.
(Maven [ 3.0.2,3.1.0) 1.1 or newer is required to build Camel 2.14 onwards)
(Maven 3.2.5 or newer is required to build Camel 2.10 18 onwards).
(Maven [ 3.03.4,3.1.0] 3 or newer is required to build Camel 2.11 20 onwards). - Get the latest Source
- Java
(1.7 or 1.6 8 to build Camel until 2.13.x (Java 1.7 is supported from Camel 2.10 14 onwards)
(1.7 8 to build Camel 2.14.0 18 onwards)
(Java 1.8 is supported from 9 experimental support for building Camel 2.14 19 onwards)
Optional:
- Prince should be in the executable PATH to generate the PDF documentation
Maven options
To build camel maven has to be configured to use more memory:
Unix/Linux/Mac
Code Block | ||
---|---|---|
| ||
export MAVEN_OPTS="-Xms2048mXms3000m -Xmx2048mXmx3000m -XX:MaxPermSize=512m" |
Windows
Code Block | ||
---|---|---|
| ||
set MAVEN_OPTS=-Xms2048mXms3000m -Xmx2048mXmx3000m -XX:MaxPermSize=512m |
To conserve memory with Java 8 you can set two additional Java options -XX:+UseG1GC to enable G1 garbage collector (default in Java 9) and -XX:+UseStringDeduplication to help decrease Maven memory usage (up to 1.5GB is required currently, but set it a higher):
Unix/Linux/Mac
Code Block | ||
---|---|---|
| ||
export MAVEN_OPTS="-Xmx2G -XX:+UseG1GC -XX:+UseStringDeduplication"
|
Windows
Code Block | ||
---|---|---|
| ||
set MAVEN_OPTS=-Xmx2G -XX:+UseG1GC -XX:+UseStringDeduplication
|
You can try to experiment with parallel builds by adding -T1.5C to MAVEN_OPTS, but be wary as some of the plugins are not thread safe, and the console output will be intertwined. With parallel builds and when using the install goal you might experience race conditions with the local repository, using Takari Concurrent Local Repository will help with that.
A normal build
Code Block | ||
---|---|---|
| ||
mvn clean install |
...
Code Block | ||
---|---|---|
| ||
mvn install -Pfastinstall |
Using an IDE
If you prefer to use an IDE then you can auto-generate the IDE's project files using maven plugins. e.g.
IntelliJ
Code Block | ||
---|---|---|
| ||
mvn idea:idea
|
Eclipse
There are several ways to import the projects into Eclipse.
m2e
Starting with Camel 2.14.0, Camel can be imported into Eclipse using m2e Maven integration.
Before you start: It is important to run Eclipse with at least 1.5 GB of heap memory, otherwise the import process will fail. To increase the heap size, edit the "eclipse.ini" file and set the -Xmx parameter as follows:
Code Block | ||
---|---|---|
| ||
[...]
-Xmx1536m |
Cloning the Git Repository
Either follow instructions about getting the latest source, or clone the Git repository with Eclipse by selecting "File -> Import -> Git / Projects from Git" and "Clone URI". Provide all repository details in the import wizard and clone the repository into a directory outside of the Eclipse workspace. Once cloning has completed, exit the import project wizard (i.e. simply select cancel when asked to select "Wizard for project import").
Import Maven Projects
Import Camel projects as Maven projects using m2e by selecting "File -> Import -> Maven -> Existing Maven Projects". Point the wizard to the root directory of the cloned repository. Eclipse will analyze all Camel projects and eventually present the following summary:
Simply confirm the import of all projects by clicking "Finish". The import process will create Eclipse projects and automatically set up build paths using dependency details provided by the pom.xml files. Once completed, all Camel projects will be available in your workspace:
maven-eclipse-plugin
Updating the license headers
Proper license headers are enforced using Apache RAT and Checkstyle Maven plugins. To make it less tedious and error prone you can update the license headers by usingThe maven-eclipse-plugin can be used to generate the .classpath/.project/.settings file that Eclipse need. To do this, run:
Code Block | ||
---|---|---|
| ||
mvn process-test-sourcesPlicense eclipselicense:eclipse |
or
Code Block | ||
---|---|---|
| ||
mvn -Psetup.eclipse -Declipse.workspace.dir=/path/to/your/workspace
|
The latter is recommended as it would completely setup the workspace for you as well as provide options to wire in other projects also found in your workspace.
After running the above command, from within Eclipse, do "File -> Import -> Existing Projects into Workspace", select the root camel checkout location and Eclipse should find all the projects.
Adding Camel Eclipse templates to your workspace
The above mentioned setup.eclipse profile does a few additional things to your workspace:
- Adds the Camel code templates (see here)
- Sets the M2_REPO variable in the workspace that points to your local Maven repository (i.e.,
~/.m2/repository
on Unix andc:\Documents and Settings\<user>\.m2\repository
on Windows) which allows the jars to be resolved.
Hint: specify the workspace location in your .m2/settings.xml
You can add a profile to your .m2/settings.xml to specify your eclipse workspace location so you can avoid having to type that each time you need to update the projects.
...
<profiles>
<profile>
<id>setup.eclipse</id>
<properties>
<eclipse.workspace>/path/to/your/workspace</eclipse.workspace>
</properties>
</profile>
</profiles>
format
|
This can be invoked from any module, which makes it useful when working on components. You can find the various license headers that the Camel project uses in buildtools/src/main/resources/header-*.txt files. These are regenerated at build time from header.txt in the same directory.
Building with checkstyle
To enable source style checking with checkstyle, build Camel with the -Psourcecheck parameter
Code Block | ||
---|---|---|
| ||
mvn -Psourcecheck clean install
|
Building source jars
If you want to build jar files with the source code, that for instance Eclipse can important so you can debug the Camel code as well. Then you can run this command from the camel root folder:
Code Block | ||
---|---|---|
| ||
mvn clean source:jar install -Pfastinstall
|
Building with Spring 3.0
...
Support for Spring 3.0 is deprecated from Camel 2.11 onwards.
From Camel 2.11.0 onwards, if you want Camel to be build against Spring 3.0 you have to build with the maven profile spring3.0
.
Code Block | ||
---|---|---|
| ||
mvn clean install -Pspring3.0
|
Building with Spring 3.1
From Camel 2.10.0 onwards, if you want Camel to be build against Spring 3.1 you have to build with the maven profile spring3.1
.
Code Block | ||
---|---|---|
| ||
mvn clean install -Pspring3.1
|
From Camel 2.11.0 onwards, Spring 3.1 is the default.
Note: the camel-test-spring
component requires to be built with Spring 3.1.
Building with Spring 3.2
From Camel 2.11.0 onwards, if you want Camel to be build against Spring 3.2 you have to build with the maven profile spring3.2
.
Code Block | ||
---|---|---|
| ||
mvn clean install -Pspring3.2
|
From Camel 2.12.0 onwards, Spring 3.2 is the default.
Building with Spring 4.0
From Camel 2.13.0 onwards, if you want Camel to be build against Spring 4.0 to work around the back compatible issue CAMEL-7074, you have to build with the maven profile spring4
.
Code Block | ||
---|---|---|
| ||
mvn clean install -Pspring4
|
From Camel 2.12.0 onwards, Spring 3.2 is the default.
Working with karaf features
If you change anything in the features.xml from platform/karaf
you can run a validation step to ensure the generated features.xml file is correct. You can do this running the following maven goal from the platform
directory.
...