Camel Maven PluginThe 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
Adding the plugin to your pom.xmlAdd the following in your <build><plugins> section
<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 filesFrom Camel 1.4 onwards loading Spring context files via a file location is also supported. You configure this with the fileApplicationContextUri option. Paths may be split using a semi-colon (;). This sort of file location is useful for web application projects that store spring configuration files in WEB-INF. It can also be used to replace configuration that requires an OSGi container with an equivalent non-OSGi configuration. <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <fileApplicationContextUri> src/main/webapp/WEB-INF/camel*.xml; src/test/spring/test-context.xml </fileApplicationContextUri> </configuration> </plugin> ClasspathThe plugin will construct a classpath of any Maven dependency with scope "compile". The classpath is output as an INFO log statement upon startup. Route InformationInformation 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. src/main/resources/log4.properties
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 ReportsIf 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. |