Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the early version of the new website
https://camel.apache.org/staging/
We would very much like to receive any feedback on the new site, please join the discussion on the Camel user mailing list.
camel:runThe camel:run goal of the Camel Maven Plugin is used to run your Camel Spring configurations in a forked JVM from Maven. A good example application to get you started is the Spring Example. cd examples/camel-example-spring mvn camel:run This makes it very easy to spin up and test your routing rules without having to write a main(…) method; it also lets you create multiple jars to host different sets of routing rules and easily test them independently. How this works is that the plugin will compile the source code in the maven project, then boot up a Spring ApplicationContext using the XML confiuration files on the classpath at META-INF/spring/*.xml If you want to boot up your Camel routes a little faster, you could try the camel:embedded instead. Running OSGi BlueprintFrom Camel 2.10 onwards the OSGI-INF/blueprint/*.xml You would need to configure the camel:run plugin to use blueprint, by setting useBlueprint to true as shown below <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <useBlueprint>true</useBlueprint> </configuration> </plugin> This allows you to boot up any Blueprint services you wish - whether they are Camel-related, or any other Blueprint. From Camel 2.17 onwards the camel:run goal is able to auto detect if camel-blueprint is on the classpath or there is blueprint XML files in the project, and therefore you no longer have to configure the useBlueprint option. Using limited Blueprint container We use the PojoSR project as the blueprint container. This project is not a full fledged blueprint container. For that you can use Apache Karaf or Apache ServiceMix. In Camel 2.15.3 and later, we use Felix Connect instead. PojoSR was donated to ASF and is now maintained under Felix project. You can use the <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <useBlueprint>true</useBlueprint> <applicationContextUri>myBlueprint.xml</applicationContextUri> <!-- ConfigAdmin options which have been added since Camel 2.12.0 --> <configAdminPid>test</configAdminPid> <configAdminFileName>/user/test/etc/test.cfg</configAdminFileName> </configuration> </plugin> The Running CDIFrom Camel 2.11 onwards the You would need to configure the camel:run plugin to use CDI, by setting useCDI to true as shown below <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <useCDI>true</useCDI> </configuration> </plugin> This allows you to boot up any CDI services you wish - whether they are Camel-related, or any other CDI enabled services. You should add the CDI container of your choice (e.g. Weld or OpenWebBeans) to the dependencies of the camel-maven-plugin such as in this example. From Camel 2.17 onwards the camel:run goal is able to auto detect if camel-cdi in on the classpath, and therefore you no longer have to configure the useCDI option. From the source of Camel you can run a CDI example via cd examples/camel-example-cdi mvn compile camel:run Logging the classpathFrom Camel 2.10 onwards you can configure whether the classpath should be logged when <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <logClasspath>true</logClasspath> </configuration> </plugin>
Using live reload of XML filesFrom Camel 2.19 onwards you can configure the plugin to scan for XML file changes and trigger a reload of the Camel routes which are contained in those XML files. <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <fileWatcherDirectory>src/main/resources/META-INF/spring</fileWatcherDirectory> </configuration> </plugin> Then the plugin watches this directory. This allows you to edit the source code from your editor and save the file, and have the running Camel application pickup those changes. Notice its only changes of Camel routes, eg
|