第 46 章 Framework 入门

摘要

本章介绍了使用 API 组件框架实施 Camel 组件的基本原则,它基于使用 camel-archetype-api-component Maven archetype Maven archetype 生成的代码。

46.1. 使用 Maven Archetype 生成代码

Maven archetypes

Maven archetype 与代码向导类似:如果给定几个简单参数,它会生成一个完整的、可正常工作的 Maven 项目,填充了示例代码。然后,您可以使用此项目作为模板,自定义实现来创建您自己的应用程序。

API 组件 Maven archetype

API 组件框架提供 Maven archetype, camel-archetype-api-component,可为您自己的 API 组件实施生成起点代码。这是推荐创建您自己的 API 组件的方法。

先决条件

运行 camel-archetype-api-component archetype 的唯一先决条件是安装了 Apache Maven,并且 Maven settings.xml 文件配置为使用标准 Fuse 存储库。

调用 Maven archetype

要创建使用 示例 URI 架构的示例组件,请调用 camel-archetype-api-component archetype 来生成新的 Maven 项目,如下所示:

mvn archetype:generate \
-DarchetypeGroupId=org.apache.camel.archetypes \
-DarchetypeArtifactId=camel-archetype-api-component \
-DarchetypeVersion=2.23.2.fuse-790054-redhat-00001 \
-DgroupId=org.jboss.fuse.example \
-DartifactId=camel-api-example \
-Dname=Example \
-Dscheme=example \
-Dversion=1.0-SNAPSHOT \
-DinteractiveMode=false
注意

每行末尾的反斜杠字符 \ \ 表示行继续符,这仅适用于 Linux 和 UNIX 平台。在 Windows 平台上,删除反斜杠,并将所有参数放在一行中。

选项

使用语法 -DName=Value 为 archetype generation 命令提供选项。大多数选项应当如前面的 mvn archetype:generate 命令中所示,但可以修改一些选项,以自定义生成的项目。下表显示了可以用来自定义所生成的 API 组件项目的选项:

Name描述

groupId

(通用 Maven 选项) 指定生成的 Maven 项目的组 ID。默认情况下,这个值还可定义生成的类的 Java 软件包名称。因此,最好选择这个值以匹配您想要的 Java 软件包名称。

artifactId

(通用 Maven 选项) 指定所生成的 Maven 项目的构件 ID。

name

API 组件的名称。这个值用于生成生成的代码中的类名称(例如,建议名称以大写字母开头)。

scheme

此组件的 URI 中使用的默认方案。您应该确保此方案不会与任何现有 Camel 组件的方案冲突。

archetypeVersion

(通用 Maven 选项) 是您计划部署该组件的容器的 Apache Camel 版本。但是,如果需要,您也可以在项目生成后修改 Maven 依赖项的版本。

生成的项目的结构

假设代码生成步骤成功完成,您应该会看到一个新目录 camel-api-example,其中包含新的 Maven 项目。如果您在 camel-api-example 目录中查看,您会看到它有以下通用结构:

camel-api-example/
    pom.xml
    camel-api-example-api/
    camel-api-example-component/

在项目的顶层,是一个聚合 POM,pom.xml,它被配置为构建两个子项目,如下所示:

camel-api-example-api

API 子项目(命名为 ArtifactId-api)包含您要转换为组件的 Java API。如果您作为您自己编写的 Java API 上的 API 组件,可以将 Java API 代码直接放入此项目。

API 子项目可用于以下一个或多个目的:

  • 打包 Java API 代码(如果它还没有作为 Maven 软件包可用)。
  • 为 Java API 生成 Javadoc (提供 API 组件框架所需的元数据)。
  • 从 API 描述生成 Java API 代码(例如,来自 REST API 的 WADL 描述)。

然而,在某些情况下,您可能不需要执行这些任务。例如,如果 API 组件基于第三方 API,后者已在 Maven 软件包中提供 Java API 和 Javadoc。在这种情况下,您可以删除 API 子项目。

camel-api-example-component
组件子项目(命名为 ArtifactId-component)包含新的 API 组件的实现。这包括组件实施类和 camel-api-component-maven 插件的配置(它将从 Java API 生成 API 映射类)。