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:embeed

2.12.1.1. 选项

Camel Maven 插件 运行 目标支持以下选项,这些选项可以从命令行(使用 -D 语法)或在 < configuration > 标签的 pom.xml 文件中定义。

参数

默认值

描述

duration

-1

设置应用程序在终止前运行的时间持续时间(秒)。值 TOKEN 0 将永久运行。

durationIdle

-1

设置在终止前可以闲置闲置时间(秒)持续时间。值 TOKEN 0 将永久运行。

durationMaxMessages

-1

设置应用程序在终止前的最大消息数量的持续时间。

logClasspath

false

是否在启动时记录类路径

2.12.1.2. 运行 OSGi Blueprint

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. 使用有限的 Blueprint 容器

我们使用 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>

applicationContextUri 从 classpath 中加载文件,因此,在 myBlueprint.xml 文件的示例中必须是 classpath 的 root 中。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. 记录类路径

您可以配置在 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&gt;,或支持 <route >。您不能更改 Spring 或 OSGi Blueprint < bean> 元素。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.