这是用户在 2024-3-28 22:00 为 https://camel.apache.org/manual/camel-maven-plugin.html 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?

 camel maven 插件


骆驼 Maven 插件支持以下目标


  • 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 示例(Spring Example)是一个很好的入门应用示例。

cd examples/camel-example-spring
mvn camel:run


这样,无需编写 main(...) 方法,就能非常容易地启动和测试路由规则;还能创建多个 jar 来托管不同的路由规则集,并轻松地对它们进行独立测试。


插件的工作原理是编译 maven 项目中的源代码,然后使用类路径 META-INF/spring/*.xml 中的 XML 配置文件启动 Spring ApplicationContext。


如果您想更快地启动骆驼路由,可以尝试使用 camel:embedded 代替。

 选项


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

 参数

 默认值

 说明

 会期

-1


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

 闲置时间

-1


设置应用程序终止前的空闲持续时间(秒)。值 ⇐ 0 将永远运行。

 最大持续时间

-1


设置应用程序在终止前处理信息的最大数量。

 日志路径

 错误


是否在启动

 日志级别

OFF


是否使用内置控制台日志(使用 log4j),这不需要在项目中添加任何日志依赖关系。不过,日志会固定记录到控制台,颜色风格与 Spring Boot 相似。你可以将根日志级别更改为致命、错误、警告、信息、调试、跟踪、关闭

 概况


使用特定的 Camel 主配置文件(dev、test、prod)运行

 记录类路径


您可以配置是否在执行 camel:run 时记录 classpath。您可以使用

<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:devcamel:run 的扩展,用于在开发者模式下运行 Camel 应用程序。在该模式下,Camel 将热加载位于 src/main/resources 目录中的 DSL 路由(xml、yaml 和 java)。

 选项


maven 插件开发目标支持以下选项,这些选项可通过命令行配置(使用 -D 语法),或在 pom.xml 文件的 <configuration> 标记中定义。

 参数

 默认值

 说明

 路由目录

src/main/resources


监视目录中的文件变化,从而触发 Camel 路由的实时重新加载。

 会期

-1


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

 闲置时间

-1


设置应用程序终止前的空闲持续时间(秒)。值 ⇐ 0 将永远运行。

 最大持续时间

-1


设置应用程序在终止前处理信息的最大数量。

 日志路径

 错误


是否在启动

 日志级别

OFF


是否使用内置控制台日志(使用 log4j),这不需要在项目中添加任何日志依赖关系。不过,日志会固定记录到控制台,颜色风格与 Spring Boot 相似。你可以将根日志级别更改为致命、错误、警告、信息、调试、跟踪、关闭

 概况

dev


使用特定的 Camel 主配置文件(dev、test、prod)运行

camel:debug


camel:debugcamel:dev 的扩展,用于在调试模式下运行 Camel 应用程序,通过 Camel 文本路由调试器调试 Camel 路由。

 选项


maven 插件调试目标支持以下选项,这些选项可通过命令行配置(使用 -D 语法),或在 pom.xml 文件的 <configuration> 标记中定义。

 参数

 默认值

 说明

 吊销

 


指示在未连接调试器时是否应暂停 Camel 的消息处理。

camel:prepare-fatjar


Camel Maven 插件的 camel:prepare-fatjar 目标用于准备将 Camel 应用程序打包为胖 jar。该目标会扫描 Maven 依赖关系以发现 Camel JAR,并提取其中是否包含类型转换器,然后将其合并为一个 uber 文件,保存在 target/classes/META-INF/services/org/apache/camel/UberTypeConverterLoader 中。.


该 uber 载入器文件包含 Camel 应用程序在运行时使用的所有组合类型转换器。它们被合并到这个单一文件中。


这是必要的,否则胖 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>