第 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 依赖项。
-
插件的基本配置在
插件管理
范围内声明(也定义了要使用的插件版本)。 - 插件实例本身已声明和配置。
-
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.21.0.fuse-770013-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
配置声明为私有软件包。因此,如果您希望一个类私有,您应该将其放在此 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
元素配置,它包含单个 apis
子元素来配置 Java API 的类。每个 API 类都由 api
元素配置,如下所示:
apiName
API 名称是 API 类的短名称,用作端点 URI 的
endpoint-prefix
部分。注意如果 API 仅包含单个 Java 类,您可以将
apiName
元素留空,以便endpoint-prefix
变得冗余,您可以使用 “单个 API 类的 URI 格式”一节 中显示的格式指定端点 URI。proxyClass
- 此元素指定 API 类的完全限定名称。
fromJavadoc
-
如果 API 类附带 Javadoc 元数据,则必须通过将
fromJavadoc
元素和 Javadoc 本身包含在 Maven 文件中作为提供的
依赖项来指定。 fromSignatureFile
如果 API 类由签名文件元数据附带,您必须通过包含
fromSignatureFile
元素来指示这一点,其中此元素的内容指定签名文件的位置。注意签名文件不会包含在 Maven 构建的最终软件包中,因为这些文件仅在构建时需要,而不需要在运行时。
自定义 API 映射
API 映射的以下方面可以通过配置插件来自定义:
-
方法 alias setuptools-busyboxyou 可以使用别名配置元素为 API 方法定义其他名称(
别名
)。详情请查看 第 47.3 节 “方法别名”。 -
nullable options mvapich-criuyou 可以使用
nullableOptions
配置元素来声明默认为null
的方法参数。详情请查看 第 47.4 节 “空选项”。 -
由于 API 映射的实施方式,参数 名替换 mvapich-wagond,特定 API 类中的所有方法的参数 属于同一 命名空间。如果将具有相同名称的两个参数声明为不同的类型,这会导致冲突。要避免这种名称冲突,您可以使用 replaces 配置元素来重命名方法参数(因为它们将显示在 URI 中)。
详情请查看 第 47.5 节 “参数名称替换”。
-
当参数是映射 Java 参数到 URI 选项时,您可能想从映射中排除某些参数。您可以通过指定
excludeConfigNames
元素或excludeConfigTypes
元素来过滤不需要的参数。详情请查看 第 47.6 节 “排除的参数”。 -
您可能要定义额外选项(不是 Java API 的一部分)的额外选项。您可以使用
extraOptions
配置元素进行此操作。
配置 Javadoc 元数据
可以过滤 Javadoc 元数据来忽略或显式包含某些内容。有关如何进行此操作的详情,请参考 第 47.2 节 “javadoc 选项”。
配置签名文件元数据
如果没有 Javadoc 可用,您可以利用签名文件来提供所需的映射元数据。fromSignatureFile
用于指定对应签名文件的位置。它没有特殊选项。