第 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 组件项目的选项:
名称 | 描述 |
---|---|
| (generic Maven 选项) 指定生成的 Maven 项目的组 ID。默认情况下,这个值也定义所生成的类的 Java 软件包名称。因此,选择这个值要与您想要的 Java 软件包名称匹配是一个好主意。 |
| (generic 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 映射类)。