第 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_13_0-00013-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 依赖项版本。 |
生成的项目的结构
假设代码生成步骤成功完成,您应该会看到包含新 Maven 项目的新目录 camel-api-example
。如果您在 camel-api-example
目录中查看,您会看到它有以下通用结构:
camel-api-example/ pom.xml camel-api-example-api/ camel-api-example-component/
在项目顶层是聚合 POM pom, pom.xml
,它被配置为构建两个子项目,如下所示:
- camel-api-example-api
API 子项目(名为
ArtifactId-api
)包含您要转换为组件的 Java API。如果您要将 API 组件捆绑到您编写的 Java 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 映射类)。