2.12. Camel Maven 插件
Camel Maven 插件支持以下目标:
- Camel:run - 来运行 Camel 应用程序
- Camel:validate - 验证无效的 Camel 端点 URI 的源代码
- Camel:route-coverage - 在单元测试后报告您的 Camel 路由覆盖情况
2.12.1. Camel:run
Camel Maven 插件的 camel:run
目标用于在从 Maven 派生的 JVM 中运行您的 Camel Spring 配置。您启动的好示例应用程序是 Spring 示例。
cd examples/camel-example-spring mvn camel:run
这样,可以在无需编写 main(…)方法的情况下轻松启动和测试您的路由规则;它还可让您创建多个 jar 来托管不同的路由规则,并轻松地独立测试它们。Camel Maven 插件编译了 maven 项目中的源代码,然后使用 META-INF/spring/*.xml
类路径上的 XML 配置文件引导 Spring ApplicationContext。如果要更快地引导 Camel 路由,您可以尝试 camel:embeeded
。
2.12.1.1. 选项
Camel Maven 插件 运行 目标支持以下选项,它们可从命令行配置(使用 -D
语法),或在 < configuration
> 标签中的 pom.xml
文件中定义。
参数 | 默认值 | 描述 |
duration | -1 | 设置应用程序在终止前所运行的时间持续时间(秒)。系统会永久运行值 InventoryService 0。 |
durationIdle | -1 | 设置应用程序在终止前可以闲置的空闲时间(秒)持续时间。系统会永久运行值 InventoryService 0。 |
durationMaxMessages | -1 | 设置应用程序进程在终止前的最大消息的持续时间。 |
logClasspath | false | 是否在启动时记录类路径 |
2.12.1.2. 运行 OSGi 蓝图
camel:run
插件还支持运行 Blueprint 应用程序,默认情况下,它会在 OSGI-INF/blueprint/*.xml
中扫描 OSGi 蓝图文件。您需要将 camel:run 插件配置为使用蓝图,方法是将 useBlueprint 设置为 true,如下所示:
<plugin> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <useBlueprint>true</useBlueprint> </configuration> </plugin>
这可让您引导所有您想要的蓝图服务,无论它们是否与 Camel 相关,还是其它蓝图。camel:run
目标可自动检测 camel-blueprint 位于类路径中,或者项目中是否存在蓝图 XML 文件,因此您不必配置 useBlueprint
选项。
2.12.1.3. 使用有限的蓝图容器
我们使用 Felix Connector 项目作为蓝图容器。此项目不是完整的蓝图容器。为此,您可以使用 Apache Karaf 或 Apache ServiceMix。您可以使用 应用程序ContextUri
配置指定显式蓝图 XML 文件,例如:
<plugin> <groupId>org.jboss.redhat-fuse</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>
应用程序ContextUri
从 classpath 加载文件,因此在 myBlueprint.xml
文件上方的示例中必须位于 classpath 的根目录中。configAdminPid
是 pid 名称,在加载持久性属性文件时将用作配置 admin 服务的 pid 名称。configAdminFileName
是用于加载配置 admin 服务属性文件的文件名。
2.12.1.4. 运行 CDI
camel:run
插件还支持运行 CDI 应用。这可让您引导所有您想要的 CDI 服务,无论它们是与 Camel 相关的,还是任何其他 CDI 启用的服务。您应该将您选择的 CDI 容器(如 Weld 或 OpenWebBeans)添加到 camel-maven-plugin 的依赖关系,如本例中所示。在 Camel 的源中,您可以运行 CDI 示例,如下所示:
cd examples/camel-example-cdi mvn compile camel:run
2.12.1.5. 记录 classpath
您可以配置当 camel:run
执行时,是否应该记录 classpath。您可以使用以下方法在配置中启用此功能:
<plugin> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <logClasspath>true</logClasspath> </configuration> </plugin>
2.12.1.6. 使用 XML 文件实时重新载入
您可以配置插件来扫描 XML 文件更改,并触发在这些 XML 文件中包含的 Camel 路由重新载入。
<plugin> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>camel-maven-plugin</artifactId> <configuration> <fileWatcherDirectory>src/main/resources/META-INF/spring</fileWatcherDirectory> </configuration> </plugin>
然后,插件会监视此目录。这可让您从编辑器编辑源代码并保存文件,并使正在运行的 Camel 应用程序使用这些更改。请注意,只有 Camel 路由的更改,如 < routes>
; 或支持 & lt;route
>。您无法更改 Spring 或 OSGi Blueprint < bean>
元素。