Camel Maven Plugin
The Camel Maven Plugin allows you to run your Enterprise Integration Patterns using Spring for Dependency Injection inside Maven along with being able to support Visualisation along with integration of the Visualisation diagrams into the standard maven reports for your project.
Goals Supported
Documentation |
Reference |
Description |
---|---|---|
Boots up Camel in a new JVM using the Spring configuration at META-INF/spring/*.xml and runs your routing rules |
||
Boots up Camel in the same JVM as Maven using the Spring configuration at META-INF/spring/*.xml and runs your routing rules |
||
Generates DOT files and then HTML, PNG, SVG files for your EIP routing rules with integration into Maven Reports |
Adding the plugin to your pom.xml
Add the following in your <build><plugins> section
You may override the default Spring application context file uri META-INF/spring/*.xml by using the applicationContextUri property in the camel-maven-plugin configuration. Paths may be split using a semi-colon (;).
<plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <applicationContextUri>META-INF/spring/*.xml;YOUR_FILE_NAME_IN_THE_CLASS_PATH.xml</applicationContextUri> </configuration> </plugin>
You can also specify what Main class to use when running the plugin. By default this is org.apache.camel.spring.Main.
<plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> <!-- optional, default value: org.apache.camel.spring.Main --> <configuration> <mainClass>mypackage.boot.camel.CamelStartup</mainClass> </configuration> </plugin>
File based spring configuration files
In Camel 1.4 loading file based spring context files is also supported. You configure this with the new option fileApplicationContextUri. Paths may be split using a semi-colon (;). This is usable for projects that is web applications and you store spring configuration files in WEB-INF.
<plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <fileApplicationContextUri>src/main/webapp/WEB-INF/camel*.xml</fileApplicationContextUri> </configuration> </plugin>
Classpath
The plugin will construct a classpath of any Maven dependency with scope "compile". The classpath is output as an INFO log statement upon startup.
Route Information
Information about the generated routes is available through the GraphViz report, and also through the log statements generated by the run goal. If you would like to see this information then add a log4j (or other commons-logging implementation) config file with the following levels.
log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n log4j.logger.org.apache.camel.impl.DefaultCamelContext=DEBUG, stdout log4j.additivity.org.apache.camel.impl.DefaultCamelContext=false
This should produce a log statement similar to:
670 [org.apache.camel.spring.Main.main()] DEBUG org.apache.camel.impl.DefaultCamelContext - Adding routes from: Routes: [Route[ [From[jms:queue:queueA]] -> [To[jms:queue:queueB], To[jms:queue:queueC]]]] routes: []
Integration into Maven Reports
If you add the camel-maven-plugin to your <reporting> section of your pom you will automatically get the Visualisation reporting generated for your project as part of the regular maven site generation.
For example add the following into your pom
<project> ... <reporting> <plugins> <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> </plugin> </plugins> </reporting> </project>
Then when you run
mvn site
Your context will be booted up via the META-INF/spring/*.xml files, the DOT file generated and a nice HTML report created.