第 47 章 配置 API 组件 Maven 插件
摘要
本章介绍了对 API 组件 Maven 插件上所有可用的配置选项的参考。
47.1. 插件配置概述
概述
API 组件 Maven 插件的主要目的是 camel-api-component-maven-plugin
来生成 API 映射类,该类在端点 URI 和 API 方法调用之间实施映射。通过编辑 API 组件 Maven 插件的配置,您可以自定义 API 映射的各个方面。
生成代码的位置
默认情况下,API 组件 Maven 插件生成的 API 映射类放置在以下位置:
ProjectName-component/target/generated-sources/camel-component
先决条件
API 组件 Maven 插件的主要输入是 Java API 类和 Javadoc 元数据。通过将插件声明为常规 Maven 依赖项(Javadoc Maven 依赖项应当与 提供的范围声明的位置)提供给
插件。
设置插件
设置 API 组件 Maven 插件的建议方法是使用 API 组件 archetype 生成起点代码。这会在 ProjectName-component/pom.xml
文件中生成默认插件配置,然后您可以为项目自定义该文件。插件设置的主要方面有如下:
- 必须声明需要 Java API 和 Javadoc 元数据的 Maven 依赖项。
-
插件的基本配置在
pluginManagement
范围(也定义要使用的插件版本)中声明。 - 插件实例本身被声明和配置。
-
build-helper-maven
插件配置为从target/generated-sources/camel-component
目录中获取生成的源,并将它们包含在 Maven 构建中。
基本配置示例
以下 POM 文件提取显示 API 组件 Maven 插件的基本配置,如使用 API 组件 archetype 生成代码时在 Maven 插件管理
范围中定义:
<?xml version="1.0" encoding="UTF-8"?> <project ...> ... <build> ... <pluginManagement> <plugins> <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-api-component-maven-plugin</artifactId> <version>2.23.2.fuse-7_13_0-00013-redhat-00001</version> <configuration> <scheme>${schemeName}</scheme> <componentName>${componentName}</componentName> <componentPackage>${componentPackage}</componentPackage> <outPackage>${outPackage}</outPackage> </configuration> </plugin> </plugins> </pluginManagement> ... </build> ... </project
pluginManagement
范围中指定的配置为插件提供默认设置。它实际上不会创建插件实例,但其默认设置将供任何 API 组件插件实例使用。
基本配置
除了指定插件版本(在 version
元素中),前面的基本配置指定了以下配置属性:
scheme
- 此 API 组件的 URI 方案。
componentName
- 此 API 组件的名称(也用作生成的类名称的前缀)。
componentPackage
-
指定包含 API 组件 Maven archetype 生成的类的 Java 软件包。这个软件包也会由默认的
maven-bundle-plugin
配置导出。因此,如果您希望一个类公开可见,您应该将它放在此 Java 软件包中。 outPackage
-
指定放置生成的 API 映射类的 Java 软件包(当它们由 API 组件 Maven 插件生成时)。默认情况下,这具有
componentName
属性的值,并添加.internal
后缀。这个软件包被默认maven-bundle-plugin
配置声明为 private。因此,如果您想一个类是私有的,您应该将它放在此 Java 软件包中。
实例配置示例
以下 POM 文件提取显示了 API 组件 Maven 插件的示例实例,该插件配置为在 Maven 构建期间生成 API 映射:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> ... <build> <defaultGoal>install</defaultGoal> <plugins> ... <!-- generate Component source and test source --> <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-api-component-maven-plugin</artifactId> <executions> <execution> <id>generate-test-component-classes</id> <goals> <goal>fromApis</goal> </goals> <configuration> <apis> <api> <apiName>hello-file</apiName> <proxyClass>org.jboss.fuse.example.api.ExampleFileHello</proxyClass> <fromSignatureFile>signatures/file-sig-api.txt</fromSignatureFile> </api> <api> <apiName>hello-javadoc</apiName> <proxyClass>org.jboss.fuse.example.api.ExampleJavadocHello</proxyClass> <fromJavadoc/> </api> </apis> </configuration> </execution> </executions> </plugin> ... </plugins> ... </build> ... </project>
基本映射配置
该插件由 configuration
元素配置,其中包含一个用于配置 Java API 类的 apis
子元素。每个 API 类都由 api
元素配置,如下所示:
apiName
API 名称是 API 类的短名称,用作端点 URI 的
endpoint-prefix
部分。注意如果 API 仅包含单个 Java 类,您可以将
apiName
元素留空,以便endpoint-prefix
变得冗余,然后使用 “单个 API 类的 URI 格式”一节 中显示的格式指定端点 URI。proxyClass
- 此元素指定 API 类的完全限定域名。
fromJavadoc
-
如果 API 类由 Javadoc 元数据提供,您必须通过包含
fromJavadoc
元素和 Javadoc 本身的 Javadoc 本身来指示这一点,作为提供的
依赖项在 Maven 文件中指定。 fromSignatureFile
如果 API 类由签名文件元数据提供,您必须通过包含
fromSignatureFile
元素来指示它,其中此元素的内容指定签名文件的位置。注意签名文件不会包含在 Maven 构建的最终软件包中,因为这些文件仅在构建时需要,而不是在运行时。
自定义 API 映射
可以通过配置插件来自定义 API 映射的以下方面:
-
方法别名 wagon- swigyou 可以使用别名配置元素为 API 方法定义附加名称(
别名
)。详情请查看 第 47.3 节 “方法别名”。 -
可为空 选项 wagon- swig 您可以使用
nullableOptions
配置元素来声明默认为null
的方法参数。详情请查看 第 47.4 节 “可为空选项”。 -
参数名称 替换 API 映射的实现方式,特定 API 类中的所有方法的参数 属于同一 命名空间。如果声明具有相同名称的两个参数不同类型,这会导致冲突。为避免此类名称冲突,您可以使用
替换配置元素
来重命名方法参数(因为它们将显示在 URI 中)。详情请查看 第 47.5 节 “参数名称替换”。 -
当将 Java 参数 映射到 URI 选项时,除了参数 HEKETI-InventoryService 时,您可能需要从映射中排除某些参数。您可以通过指定
excludeConfigNames
元素或excludeConfigTypes
元素来过滤不需要的参数。详情请查看 第 47.6 节 “排除的参数”。 -
您可能要定义不属于 Java API 的额外选项,它们可能要定义不属于 Java API 的额外选项。您可以使用
extraOptions
配置元素进行此操作。
配置 Javadoc 元数据
可以过滤 Javadoc 元数据来忽略或明确包含某些内容。有关如何执行此操作的详情,请参考 第 47.2 节 “javadoc 选项”。
配置签名文件元数据
如果没有 Javadoc 可用,您可以利用签名文件来提供所需的映射元数据。fromSignatureFile
用于指定对应签名文件的位置。它没有特殊选项。