第 46 章 Framework 入门

摘要

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

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-7_10_0-00018-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 组件项目的选项:

名称描述

groupId

(generic Maven 选项) 指定生成的 Maven 项目的组 ID。默认情况下,这个值也定义所生成的类的 Java 软件包名称。因此,选择这个值要与您想要的 Java 软件包名称匹配是一个好主意。

artifactId

(generic 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 映射类)。