第 46 章 Framework 入门
摘要
本章介绍了使用 API 组件框架实施 Camel 组件的基本原则,具体取决于使用 camel-archetype-api-component
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.21.0.fuse-770013-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 生成命令提供选项
。大部分选项应按照前面的 mvn archetype:generate
命令中所示设置,但可以修改一些选项来自定义生成的项目。下表显示了可用于自定义生成的 API 组件项目的选项:
Name | 描述 |
---|---|
| (常规 Maven 选项) 指定生成的 Maven 项目的组 ID。默认情况下,这个值还为生成的类定义 Java 软件包名称。因此,最好选择这个值以匹配您想要的 Java 软件包名称。 |
| (常规 Maven 选项) 指定生成的 Maven 项目的工件 ID。 |
| API 组件的名称。这个值用于在生成的代码中生成类名称(例如,建议名称应以大写字母开头)。 |
| 此组件在 URI 中使用的默认方案。您应该确保此方案与任何现有 Camel 组件的方案不冲突。 |
| (常规 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 映射类)。