You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

camel:run

The 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 Blueprint

From Camel 2.10 onwards the camel:run plugin also supports running a Blueprint application, and by default it scans for OSGi blueprint files in

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.

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 applicationContextUri configuration to specify an explicit blueprint XML file, such as:

      <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 applicationContextUri will currently load the file from the classpath, so in the example above the myBlueprint.xml file must be in the root of the classpath.
The configAdminPid is the pid name which will be used as the pid name for configuration admin service when loading the persistence properties file.
The configAdminFileName is the file name which will be used to load the configuration admin service properties file.

Running CDI

From Camel 2.11 onwards the camel:run plugin also supports running a CDI application

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 the source of Camel you can run a CDI example via

cd examples/camel-example-cdi
mvn compile camel:run

Logging the classpath

From Camel 2.10 onwards you can configure whether the classpath should be logged when camel:run executes. In older releases the classpath is always logged.
This can be verbose and noisy, so from Camel 2.10 onwards, the classpath is not logged anymore. You can enable this in the configuration using:

      <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-maven-plugin</artifactId>
        <configuration>
          <logClasspath>true</logClasspath>
        </configuration>
      </plugin>    
  • No labels