第 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
文件中生成默认插件配置,然后您可以为项目自定义这些插件。插件设置的主要方面包括:
- 必须为 requisite Java API 和 Javadoc 元数据声明 Maven 依赖项。
-
插件的基本配置在
pluginManagement
范围内声明(也会定义要使用的插件版本)。 - 插件实例本身会被声明和配置。
-
build-helper-maven
插件配置为从target/generated-sources/camel-component
目录中获取生成的源,并将它们包含在 Maven 构建中。
基本配置示例
以下 POM 文件提取显示 API 组件 Maven 插件的基本配置,如使用 API 组件 archetype 生成代码时 Maven pluginManagement
范围中所定义:
<?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_10_0-00018-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 的端点前缀
部分。注意如果 API 只包含一个 Java 类,您可以将
apiName
元素留空,以便endpoint-prefix
变为冗余,您可以使用 “单个 API 类的 URI 格式”一节 所示的格式指定端点 URI。proxyClass
- 此元素指定 API 类的完全限定名称。
fromJavadoc
-
如果 API 类由 Javadoc 元数据提供,您必须通过包含
fromJavadoc
元素和 Javadoc 本身在内的 Javadoc 本身作为提供的
依赖项来指明这一点。 fromSignatureFile
如果 API 类使用签名文件元数据,您必须通过包含
fromSignatureFile
元素来指明这一点,此元素的内容指定了签名文件的位置。注意签名文件不包括在 Maven 构建的最终软件包中,因为这些文件仅在构建时不需要。
自定义 API 映射
可通过配置插件来自定义 API 映射的以下方面:
-
可以使用 别名 配置元素为 API 方法定义额外名称(
别名
)。详情请查看 第 47.3 节 “方法别名”。 -
nullable options you 可以使用
nullableOptions
配置元素来声明默认为null
的方法参数。详情请查看 第 47.4 节 “nullable 选项”。 -
解决 API 映射的实现方式的参数 替换 InventoryService- theue,特定 API 类中所有方法的参数 属于同一 命名空间。如果将具有相同名称的两个参数声明为不同的类型,则会导致冲突。要避免这种名称冲突,您可以使用
替换
配置元素来重命名方法参数(与 URI 中显示的是)。详情请查看 第 47.5 节 “参数名称替换”。 -
当 参数 InventoryService-时间将 Java 参数映射到 URI 选项时,有时您可能想从映射中排除某些参数。您可以通过指定
excludeConfigNames
元素或excludeConfigTypes
元素来过滤不需要的参数。详情请查看 第 47.6 节 “排除参数”。 -
您可能想定义额外选项(不是 Java API 的一部分)时,您可能需要定义额外选项。您可以使用
extraOptions
配置元素进行此操作。
配置 Javadoc 元数据
可以过滤 Javadoc 元数据以忽略或明确包含某些内容。有关如何进行此操作的详情,请参考 第 47.2 节 “javadoc 选项”。
配置签名文件元数据
如果没有可用的 Javadoc,您可以使用签名文件来提供所需的映射元数据。fromSignatureFile
用于指定相应签名文件的位置。它没有特殊选项。