第 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 文件中生成默认插件配置,然后您可以为项目自定义该文件。插件设置的主要方面有如下:

  1. 必须声明需要 Java API 和 Javadoc 元数据的 Maven 依赖项。
  2. 插件的基本配置在 pluginManagement 范围(也定义要使用的插件版本)中声明。
  3. 插件实例本身被声明和配置。
  4. 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 用于指定对应签名文件的位置。它没有特殊选项。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.