第 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-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 组件项目的选项:
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 映射类)。