Camel Maven 插件
Camel Maven 插件
Camel Maven 插件支持以下目标(goal)
- camel:run - 运行你的 Camel 应用程序
- camel:dev - 以开发者模式运行你的 Camel 应用程序
- camel:debug - 以调试模式运行你的 Camel 应用程序
- camel:prepare-fatjar - 为将你的 Camel 应用程序打包成 fat-jar(例如通过 maven-assembly-plugin)做准备
camel:run
Camel Maven 插件的 camel:run 目标用于在 Maven 启动的独立 JVM 中运行你的 Camel Spring 配置。Spring 示例是一个很好的入门示例应用。
cd examples/camel-example-spring
mvn camel:run这使得启动并测试你的路由规则变得非常简单,无需编写 main(…) 方法;它还允许你创建多个 jar 来承载不同的路由规则集合,并轻松地对它们分别进行测试。
其工作原理是:插件会编译 Maven 项目中的源代码,然后使用类路径上 META-INF/spring/*.xml 中的 XML 配置文件启动一个 Spring ApplicationContext。
如果你想让 Camel 路由启动得更快一些,可以尝试改用 camel:embedded。
选项
Maven 插件的 run 目标支持以下选项,这些选项可以通过命令行配置(使用 -D 语法),也可以在 pom.xml 文件的 <configuration> 标签中定义。
| 参数 | 默认值 | 说明 |
|---|---|---|
| duration | -1 | 设置应用程序在终止前运行的时间长度(秒)。取值小于等于 0 将永久运行。 |
| durationIdle | -1 | 设置应用程序在终止前允许的空闲时间长度(秒)。取值小于等于 0 将永久运行。 |
| durationMaxMessages | -1 | 设置应用程序在终止前处理的最大消息数量。 |
| logClasspath | false | 启动时是否记录类路径 |
| loggingLevel | OFF | 是否使用内置的控制台日志(基于 log4j),这样无需向项目中添加任何日志依赖。不过,日志固定输出到控制台,样式与 Spring Boot 类似的彩色风格。可以将根日志级别设置为:FATAL、ERROR、WARN、INFO、DEBUG、TRACE、OFF |
| profile | 使用指定的 Camel Main 配置文件(dev、test、prod)运行 |
记录类路径
可以配置在执行 camel:run 时是否输出类路径日志。可在配置中通过以下方式启用该功能:
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-maven-plugin</artifactId>
<configuration>
<logClasspath>true</logClasspath>
</configuration>
</plugin>使用内置日志
如果希望快速将日志输出到控制台,可以通过如下方式设置日志级别来使用内置日志:
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-maven-plugin</artifactId>
<configuration>
<loggingLevel>INFO</loggingLevel>
</configuration>
</plugin>这会以控制台日志方式运行应用,输出带颜色,风格与 Spring Boot 的日志类似。此功能默认关闭,以便使用项目中已配置的日志系统。
内置日志的意义在于:有时你不想费心配置日志,只想快速、简便地在控制台输出美观的日志信息。
camel:dev
camel:dev 是 camel:run 的扩展,用于以开发者模式运行 Camel 应用。在此模式下,Camel 会(除其他功能外)对位于 src/main/resources 目录下的 DSL 路由(xml、yaml 和 java)进行热重载。
选项
Maven 插件的 dev 目标支持以下选项,可在命令行中配置(使用 -D 语法),或在 pom.xml 文件的 <configuration> 标签中定义。
| 参数 | 默认值 | 说明 |
|---|---|---|
| routesDirectory | src/main/resources | 监视该目录中的文件更改,从而触发 Camel 路由的即时热重载。 |
| duration | -1 | 设置应用程序在终止前运行的时间(秒)。取值 ⇐ 0 表示永久运行。 |
| durationIdle | -1 | 设置应用程序在终止前可以保持空闲的时间(秒)。取值 ⇐ 0 表示永久运行。 |
| durationMaxMessages | -1 | 设置应用程序在终止前处理的最大消息数量所对应的时长。 |
| logClasspath | false | 启动时是否记录 classpath |
| loggingLevel | OFF | 是否使用内置的控制台日志(基于 log4j),无需向项目中添加任何日志依赖。不过,日志输出固定为控制台,其颜色样式与 Spring Boot 类似。你可以将根日志级别更改为:FATAL、ERROR、WARN、INFO、DEBUG、TRACE、OFF |
| profile | dev | 使用指定的 Camel Main profile 运行(dev、test、prod) |
camel:debug
camel:debug 是 camel:dev 的扩展,用于以调试模式运行 Camel 应用程序,借助 Camel 文本化路由调试器,可以对 Camel 路由进行调试。
选项
Maven 插件的 debug 目标支持以下选项,这些选项既可以从命令行配置(使用 -D 语法),也可以在 pom.xml 文件的 <configuration> 标签中定义。
| 参数 | 默认值 | 描述 |
|---|---|---|
| suspend | true | 指示在尚未附加调试器期间,是否应挂起 Camel 执行的消息处理。 |
camel:prepare-fatjar
Camel Maven 插件的 camel:prepare-fatjar 目标用于为你的 Camel 应用程序打包成 fat jar(可执行 jar)做好准备。该目标会扫描 Maven 依赖项以发现 Camel JAR,并提取其中的类型转换器,然后将它们合并为一个 uber 文件,存储在 target/classes/META-INF/services/org/apache/camel/UberTypeConverterLoader 中。
这个 uber 加载器文件包含了 Camel 应用程序在运行时使用的所有合并后的类型转换器,它们被合并到了这一个文件中。
这样做是必需的,因为否则 fat jar 的 Maven 插件(例如 maven-assembly-plugin 或 maven-shade-plugin)会导致 TypeConverterLoader 文件在打包后的 JAR 中被覆盖,从而使 Camel 无法加载全部的类型转换器。
UberTypeConverterLoader 确保所有类型转换器都能被加载,因为该文件包含了所有已知的类型转换器文件。
要使用此目标,你可以在 Camel 应用程序的 pom.xml 文件中添加以下内容:
<build>
<plugins>
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-maven-plugin</artifactId>
<version>${camel.version}</version>
<executions>
<execution>
<goals>
<goal>prepare-fatjar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>例如,要与 maven-assembly-plugin 一起使用,可以按如下方式操作。请记得将 com.foo.NameOfMainClass 替换为你自己的主类的类名:
<build>
<plugins>
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-maven-plugin</artifactId>
<version>${camel.version}</version>
<executions>
<execution>
<goals>
<goal>prepare-fatjar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.foo.NameOfMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>评论
登录后参与评论
KnowForge