Camel Maven Plugin Camel Maven 插件
The Camel Maven Plugin supports the following goals
Camel Maven 插件支持以下目标
-
camel:run - To run your Camel application
camel:run - 运行 Camel 应用程序 -
camel:dev - To run your Camel application in developer mode
camel:dev - 在开发人员模式下运行 Camel 应用程序 -
camel:debug - To run your Camel application in debug mode
camel:debug - 在调试模式下运行 Camel 应用程序 -
camel:prepare-fatjar - To prepare your Camel application for being packaged as a fat-jar (such as by maven-assembly-plugin)
camel:prepare-fatjar - 准备将 Camel 应用程序打包为 fat-jar (例如通过 maven-assembly-plugin)
camel:run camel:run (骆驼奔跑)
The camel:run
goal of the Camel Maven Plugin is used to run your Camel Spring configurations in a forked JVM from Maven. A good example application to get you started is the Spring Example.
Camel Maven 插件的 camel:run
目标用于在 Maven 的分叉 JVM 中运行你的 Camel Spring 配置。Spring Example 是一个很好的入门示例应用程序。
cd examples/camel-example-spring mvn camel:run
This makes it very easy to spin up and test your routing rules without having to write a main(…) method; it also lets you create multiple jars to host different sets of routing rules and easily test them independently.
这使得启动和测试路由规则变得非常容易,而无需编写 main(...) 方法;它还允许您创建多个 jar 来托管不同的路由规则集,并轻松地独立测试它们。
How this works is that the plugin will compile the source code in the maven project, then boot up a Spring ApplicationContext using the XML configuration files on the classpath at META-INF/spring/*.xml
其工作原理是,插件将在 maven 项目中编译源代码,然后使用 Classpath 上的 XML 配置文件在 META-INF/spring/*.xml
If you want to boot up your Camel routes a little faster, you could try the camel:embedded
instead.
如果你想更快地启动你的 Camel 路由,你可以试试 camel:embedded
来代替。
Options 选项
The maven plugin run goal supports the following options which can be configured from the command line (use -D
syntax), or defined in the pom.xml
file in the <configuration>
tag.
maven 插件运行目标支持以下选项,这些选项可以从命令行配置(使用 -D
语法),也可以在 pom.xml
文件的 <configuration>
标记中定义。
Parameter 参数 | Default Value 默认值 | Description 描述 |
duration 期间 | -1 | Sets the time duration (seconds) that the application will run for before terminating. A value ⇐ 0 will run forever. |
durationIdle durationIdle (空闲) | -1 | Sets the idle time duration (seconds) duration that the application can be idle before terminating. A value ⇐ 0 will run forever. |
durationMaxMessages | -1 | Sets the duration of maximum number of messages that the application will process before terminating. |
logClasspath | false 假 | Whether to log the classpath when starting |
loggingLevel 日志记录级别 | OFF | Whether to use built-in console logging (uses log4j), which does not require to add any logging dependency to your project. However, the logging is fixed to log to the console, with a color style that is similar to Spring Boot. You can change the root logging level to: FATAL, ERROR, WARN, INFO, DEBUG, TRACE, OFF |
profile 轮廓 | To run with a specific Camel Main profile (dev,test,prod) |
Logging the classpath 记录 Classpath
You can configure whether the classpath should be logged when camel:run
executes. You can enable this in the configuration using:
你可以配置在 camel:run
执行时是否应该记录 Classpath。您可以使用以下方法在配置中启用此功能:
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-maven-plugin</artifactId>
<configuration>
<logClasspath>true</logClasspath>
</configuration>
</plugin>
Using built-in logging 使用内置日志记录
If you want quickly to have logging to console, you can use the built-in logging by setting the logging level as shown:
如果您想快速将日志记录到控制台,可以通过设置日志记录级别来使用内置日志记录,如下所示:
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-maven-plugin</artifactId>
<configuration>
<loggingLevel>INFO</loggingLevel>
</configuration>
</plugin>
This runs the application with console logging, in color that is similar to Spring Boot logging. This is default turned off, to use the configured logging system in the project.
这将使用控制台日志记录运行应用程序,其颜色类似于 Spring Boot 日志记录。默认情况下,此选项处于关闭状态,以便在项目中使用配置的日志记录系统。
The idea with the built-in logging is that you sometimes want to avoid messing with setting up logging, and just want a quick and easy log to console that looks good.
内置日志记录的思路是,您有时希望避免设置日志记录,而只希望快速简便地将日志记录到控制台,看起来不错。
camel:dev camel:dev (骆驼开发)
The camel:dev
is an extension to camel:run
to run the Camel application in developer mode. In this mode, among others, Camel will use hot-reloading of DSL routes (xml, yaml and java) that are located from the src/main/resources
directory.camel:dev
是 camel:run
的扩展,用于在开发人员模式下运行 Camel 应用程序。在这种模式下,Camel 将使用位于 src/main/resources
目录下的 DSL 路由(xml、yaml 和 java)的热重载。
Options 选项
The maven plugin dev goal supports the following options which can be configured from the command line (use -D
syntax), or defined in the pom.xml
file in the <configuration>
tag.
maven 插件开发目标支持以下选项,这些选项可以从命令行配置(使用 -D
语法),也可以在 <configuration>
标记的 pom.xml
文件中定义。
Parameter 参数 | Default Value 默认值 | Description 描述 |
routesDirectory routes目录 | src/main/resources src/main/资源 | To watch the directory for file changes which triggers a live reload of the Camel routes on-the-fly. |
duration 期间 | -1 | Sets the time duration (seconds) that the application will run for before terminating. A value ⇐ 0 will run forever. |
durationIdle durationIdle (空闲) | -1 | Sets the idle time duration (seconds) duration that the application can be idle before terminating. A value ⇐ 0 will run forever. |
durationMaxMessages | -1 | Sets the duration of maximum number of messages that the application will process before terminating. |
logClasspath | false 假 | Whether to log the classpath when starting |
loggingLevel 日志记录级别 | OFF | Whether to use built-in console logging (uses log4j), which does not require to add any logging dependency to your project. However, the logging is fixed to log to the console, with a color style that is similar to Spring Boot. You can change the root logging level to: FATAL, ERROR, WARN, INFO, DEBUG, TRACE, OFF |
profile 轮廓 | dev 开发 | To run with a specific Camel Main profile (dev,test,prod) |
camel:debug
The camel:debug
is an extension to camel:dev
to run the Camel application in debug mode which allows to debug the Camel routes thanks to the Camel textual route debugger.
Options
The maven plugin debug goal supports the following options which can be configured from the command line (use -D
syntax), or defined in the pom.xml
file in the <configuration>
tag.
Parameter | Default Value | Description |
suspend | true | Indicates whether the message processing done by Camel should be suspended as long as a debugger is not attached. |
camel:prepare-fatjar
The camel:prepare-fatjar
goal of the Camel Maven Plugin is used to prepare your Camel application for being packaged as a fat jar. The goal scans the Maven dependencies to discover Camel JARs and extract if they have type converters, which gets merged together into a single uber file stored in target/classes/META-INF/services/org/apache/camel/UberTypeConverterLoader
.
This uber loader file contains all the combined type converters the Camel application uses at runtime. They are merged together into this single file.
This is needed as otherwise the fat jar maven plugins (such as maven-assembly-plugin, or maven-shade-plugin) causes the TypeConverterLoader
files to be overwritten in the assembled JAR which causes not all type converters to be loaded by Camel.
The UberTypeConverterLoader
ensures they all type converters gets loaded as this file contains all the known type converter files.
To use this goal, you can add the following to your Camel application pom.xml
file:
<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>
For example to use this with the maven-assembly-plugin
you can do as below. Remember to specify the class name of your main class where it says 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>